都知道怎么判断3的倍数,你会判断7的倍数吗
我们在小学二年级就知道要怎么判断一个整数是不是2的倍数,只要它的末位是2的倍数,它就是2的倍数,同样的,如果一个整数的末位是5的倍数,那么它就是5的倍数。而3的倍数要复杂一点,假如一个整数各位数之和是3的倍数,那么它就是3的倍数,有没有觉得挺神奇的?(阿婆主小学的时候觉得非常神奇),下面我们来深究一下这个原理。
我们以三位数举个例,众所周知,一个三位数可以被写成100a+10b+c的形式(a,b,c为整数),进一步可以写成(99a+9b)+(a+b+c)的形式,又因为a,b是整数,所以99a+9b肯定可以被三整除,而只要后面的部分,也就是a+b+c可以被三整除,这个整体就可以被三整除。
这就是我们小学所学的这种方法的原理。
2和5的倍数其实是同理,因为10刚好就是2和5的倍数,所以只要它的末位是2或5的倍数,它就是2或5的倍数。
那么其他数字的倍数该怎么判断呢
我们先来看看7的倍数
我们的第一直觉还是沿用刚刚的方法,还是以三位数举例,100a+10b+c可以被写成(98a+7b)+(2a+3b+c),前面的98a+7b肯定是可以被7整除的,所以只要2a+3b+c可以被7整除,这个三位数就是7的倍数,例如392,因为3×2+9×3+2=35,35是7的倍数,所以392是7的倍数
但是这个方法貌似有点问题,各位数前面的系数好像没有什么规律,我们来研究一下
实际上,第n位数前面的系数就是10ⁿ⁻¹除以7的余数,例如100÷7=14……2,因此百位数前面的系数为2,而a除以b的余数,就会等于a-b[a/b](数字加中括号表示其整数部分)。
1÷7=0.142857142857……,所以[10/7]=1,[100/7]=14,[1000/7]=142 ……
10 mod 7=10-7=3(a mod b表示a除以b的余数),100 mod 7=100-14×7=2,又由于余数一定小于7,所以余数是个位数,我们只需要将[a/b]的个位与7相乘,与最小的比它大的10的倍数做差即可,例如百位,4×7=28,30-28=2,所以百位的系数是2。
经过计算,可以发现各位前的系数从左往右为1,3,2,6,4,5循环,也就是说对于一个整数a+10b+100c+1000d……,只需要5a+4b+6c+2d+……是7的倍数,这个数就是7的倍数。
方法是有了,但是规则比较复杂,有没有更简单一点的方法呢
我们注意到21也是7的倍数,我们可以利用一下,要判断651是不是7的倍数,我们可以判断651-21=630是不是7的倍数,而630是不是7的倍数,我们只需要判断63是不是7的倍数就可以了
我们一般化一下
还是以三位数举例,对于整数100a+10b+c,我们可以减去21c,这样就变成了100a+10b-20c,即10(10a+b-2c),只要10a+b-2c是7的倍数,100a+10b+c就是7的倍数
对于1个整数,我们只需要将前面的部分减去末位的两倍,如果得到的倍数是7的倍数,这个数就是7的倍数,如判断693是不是7的倍数,因为69-3×2=63,而63是7的倍数,所以693是7的倍数。
其他数字的倍数也可以用差不多的方法
如果一个数各个位上的数字和是3的倍数,那么这个数就是3的倍数。
如果一个数去掉末位后的数减去末位的2倍,得到的结果是7的倍数,那么原来的数就是7的倍数。
如果一个数去掉末位后余下的数减去末位,结果是11的倍数,那么原来的数就是11的倍数。
如果一个数奇数位的数字和减去偶数位的数字和,差是11的倍数,那么原来的数就是11的倍数。
如果一个数去掉末位后余下的部分减去末位的9倍,结果是13的倍数,那么原来的数就是13的倍数。
如果一个数去掉末位后余下的部分加上末位的4倍,结果是13的倍数,那么原来的数就是13的倍数。
如果一个数去掉末位后余下的数减去末位的5倍,结果是17的倍数,那么原来的数就是17的倍数。
如果一个数去掉末位后减去末位的17倍,结果是19的倍数,那么这个数就是19的倍数。
如果一个数去掉末位后加上末位的2倍,结果是19的倍数,那么这个数就是19的倍数。
把一个数的末三位和其余部分分成两段,用这两段数字做差,如果结果是7或者11或者13的倍数,那么原来的数就是7或者11或者13的倍数。
---转自李永乐