余数——周期性和分组
余数,作除法运算时剩下的数。尽管从小学起我们就反复练习加、减、乘、除的计算,但有关余数的计算只在学习除法时略见其影,事实上,无论在数学还是编程中,余数都起着非常重要的作用。因为我们将意识到,“余数就是分组”,而且它的神奇性在于,将较大的数字除一次就能分组。
1. 星期数问题
以这样一个常见的问题为例:
今天是星期日,那么 1 亿天以后是星期几?
对于这个问题,我们显然知道,一周有 7 天,那么“7”是星期数的周期,从今天起每过 7 天,便循环到和今天相同的星期数。如果今天是星期日,则 7 天后、14 天后、21 天后......这种“7 的整数倍”天后都是星期日。由此我们便可引入除法运算,看 1 亿天里有几个 7 天,也就是周期的重复出现了多少次,以便将这个重复性影响剔除,方便我们解决问题。
显然,有
这表示,1 亿()里面有 14285714 个星期数周期,将它们忽略,日子便相当于只前进了 2 天,因此从今天的星期日开始往后数 2 天,便是星期二,故而 1 亿天以后必然是星期 2。
2. 更进一步——隐藏的周期性分组
在星期数的问题上,如果数字更大呢?比如:
今天是星期日,那么天以后是星期几?
我们固然可以套用之前的方法解决这个类似的问题,但是说实在的这个数太大了,计算机计算起来都相当费力,我们需要更进一步的思考。
我们并不急于求出,而可以像这样,依次增加 0 的个数,观察其规律:
| 数字 | 0 的个数 | 除法计算 | 星期数 |
|---|---|---|---|
| 0 | 1 | ||
| 1 | 3 | ||
| 2 | 2 | ||
| 3 | 6 | ||
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | 1 | ||
| 7 | 3 | ||
| 8 | 2 | ||
| 9 | 6 | ||
| 10 | 4 | ||
| 11 | 5 | ||
| 12 | 1 | ||
| 13 | 3 |
我们发现,余数以的顺序循环,即星期数在这个层面上也处于循环之中,循环周期为 6,故而与的星期数相同,我们将指数位置处的 100 对 6 作除法:
因此与的星期数相同,而在上表中我们已经通过知道了为星期 4,因此我们已经找到了答案。
3. 乘方尾数的周期性(异曲同工)
上面我们用星期数的案例为例描述了余数的作用,其实还有一个典型的问题与之类似:
的个位数是什么?
的数值显然同样大到难以计算,我们可以采用同样的做法解决这个问题,此外,由于我们只关注个位数字,因此可将高位数字忽略掉。具体计算方法这里不再赘述,答案为 7。
更新日志
5be7e-于61ed4-于6bda4-于666db-于
