友情提示:380元/半年,儿童学编程,就上码丁实验室。
根据同余定理的一些性质可以进行推导,得出一些简单的结论。为了操作方便性,尽量让规律具有操作通用性。由于质数越大,判断越复杂,所以大于31的规律请自己试着推理,目前仅考虑小于31的质数进行快速判断。
首先小于等于31的质数有2,3,5,7,11,13,17,19,23,29,31。首先数字2只要是偶数都能被整除,数字5只要尾数是0或5肯定能被5整除。
首先我们要记下一个规律表(该表可以推理得到),如下
- 3 => 1
- 7 => -2
- 11 => -1
- 13 => 4
- 17 => -5
- 19 => 2
- 23 => 7
- 29 => 3
- 31 => -3
上面表格中=>符号左边是想判断的质数,右边是用到的数字。
比如一个数字ABC,我们如何判断这个数能否被19整除呢?
- 首先查表得19对应的数字为2
- AB+C*2得到一个数(C乘以的2就是第一步查表得来的数字2)
- 第二步得到的数再循环按照第二步的规则进行不停的运算
- 如果最后的运算结果为0或者运算的结果能被19整除,那么说明该数字ABC可以被10整除
上面的ABC不一定要三位,可以任意位数字。
我们实际操作下,比如数字276013想判断能否被19整除?
- 首先查表得到19对应的数字为2
- 27601+3*2=27607
- 2760+7*2=2774
- 277+4*2=285
- 28+5*2=38
- 38其实已经可以被19整除了,当然我们可以继续运算3+8*2=19,19显然可以被19整除
- 从上面最终我们得到276013可以被19整除
我们实际操作下另一个数,比如数字7667想判断能否被17整除?
- 首先查表得到17对应的数字为-5
- 766-7*5=731
- 73-1*5=68
- 68显然可以被17整除,当然我们可以继续运算6-8*5=-34。如果值为负数的话可以不用看负数,34可以被17整除
- 最终我们确定7667可以被17整除
一般情况下我们不停的循环计算得到两位数字的时候差不多可以直接判断了
对于数字3的情况,一般书上都是教的所有数字全部相加看能否被3整除,我们为了让规律更统一,采用的自定义的方法,当然原理是一样的。
对于数字11的情况,也有的书上告诉我们用A-B+C-D+E……这种运算,结果为0或是能被11整除就说明该数字是可以被11整除。比如84337能否被11整除呢,用我们自己的查表算法,也是可以算出来的,如果用书上的办法,就是8-4+3-3+7是否为0或是否被11整除,答案显然是的。为了规律统一,3和11我们采用通用的查表算法。
至于31以后的数字判断,由于运算的数字越来越大,查表法算起来会越来越吃力,可以自己尝试寻找新的规律来解决。
另外,根据上面的表,我们也可以判断1000以内的某个数字是不是质数。因为1000以内的质数最大只需要判断1000的平方根即判断到31即可。所以对于某个数字,若想判断该数字是否是不是质数,我们只需要按顺序依次判断能否被2,3,5,7,11……整除即可。显然质数除了2,3,5,7,剩下的质数尾数全部是1或3或7或9,针对尾数是1,3,7,9的数字,按上面的表格依次判断能否被3,7,11,13,17,19,23,29,31整除即可,若全都不能整除,说明该小于1000的数字是质数。
质数对应的用来判断能否整除的表