快速判断一个整数是否可以整除另一个整数的理论分析

来源:互联网 发布:张北云计算产业园在哪 编辑:程序博客网 时间:2024/05/22 10:54
如何快速判断一个整数是否可以整除另一个整数的理论分析

 引用出处:  http://blog.csdn.net/yzsind/article/details/2412328

    可能大家在小数初中的时候都知道一些快速判断一个数能被特殊的数整除的方法,如:
如果一个数的所有数字之和能被3整除,则这个数能被3整除;
如果一个数的个位为0或5,则这个数能被5整除;
如果一个数的所有数字之和能被9整除,则这个数能被9整除;
如果一个数所有奇数位的数字相加减去所有偶数位的数字后的值能被11整除,那么这个数能被11整除;
.....
但是如何快速判断一个数能被7整除呢?本文进行了被整除的理论深入分析。
 
设x和m是一个自然数:
x=xn …. x3 x2 x1
 
x1为x的个位,x2为x的十位,x3为x的百位,xn为x的N位
 
如x=2368,则x1=8,x2=6,x3=3,x4=2
 
则有如下公式:
x%m=( x1 +101%m*x2+102%m*x3+……+10n-1%m*xn)%m
 
其中%表示求余数的符号
 
公式证明
依据余数的两个定理
(m+n)%k=(m%k+n%k)%k(结合率)
 
(m*n)%k=((m%k)*n)%k (交换率)
 
则 x%m
= (x1 + x2*10 + x3*102 +xn*10n-1)%m
 
= (x1%m+ x2*10%m+ x3*102%m +xn*10n-1%m)%m
 
= (x1%m+ (10%m*x2)%m + (102%m*x3)%m +(10n-1%m*xn)%m)%m
 
= (x1 + 10%m*x2+ 102%m*x3 +10n-1%m*xn)%m
 
所以公式得证
 
举例:
如果一个数的所有数字之和能被3整除,则这个数能被3整除
10%3=1,100%3=1,1000%3=1.....10n%3=1
x%3=(x1 + x2+ x3 +......+xn)%3
 
如果一个数的个位数能被5整除,则这个数能被5整除,也就是说个位为0或5的数都能被 5整除
 
10%5=0,100%5=0,1000%5=0.....10n%5=0
x%5=x1%5
 
如果一个数的个位数加10位数的2倍加上百位数的4倍能被8整除,则这个数能被8整除
 
10%8=2,100%8=4,1000%8=0.....10n%8=0
x%8=(x1 + 2x2+ 4x3)%8
 
如果一个数的所有数字之和能被9整除,则这个数能被9整除
10%9=1,100%9=1,1000%9=1.....10n%9=1
x%9=(x1 + x2+ x3 +......+xn)%9
 
 
对于7这个数比较麻烦,用语言不好直接描述了,大家看公式就知道了
10 %7=3,102%7=2,103%7=6,104%7=4,105%7=5,106%7=1,
107%7=3,108%7=2.....
 
x%7=(x1 + 3x2+ 2x3+ 6x4+ 4x5+ 5x6+ x7+......)%7
也可写为
x%7= (x1 + 3x2+ 2x3 - x4 - 3x5 - 2x6+ x7+......)%7
例:
567%7=(7+3*6+2*5)%7=(7+18+10)%7=35%7=0
所以567%7=0
 
如果一个数所有奇数位的数字相加减去所有偶数位的数字后的值能被11整除,那么这个数能被11整除
 
10 %11=10,102%11=1,103%11=10,104%11=1.....
x%11=(x1 + 10x2+ x3+ 10x4+ x5+ 10x6+ x7+......)%11
x%11=(x1 - x2+ x3 - x4+ x5 - x6+ x7+......)%11
 
715%11=(7-1+5)%11=11%11=0
3454%11=(3-4+5-4)%11=0%11=0
 
再举一个特殊的数37
公式也不好用语言描述,但是公式比较简单
 
10 %37=10,102%37=26,103%37=1,
104%37=10,105%37=26,106%37=1
107%37=10,108%37=26,109%37=1.....
 
x%37=(x1 + 10x2+ 26x3+ x4+ 10x5+ 26x6+ x7+......)%37
x%37=(x1 + 10x2 - 11x3+ x4+ 10x5- 11x6+ x7+......)%37
 
2368%37=(8+6*10-3*11+2)%37=37%37=0
0 0
原创粉丝点击