快速判断一个整数是否可以整除另一个整数的理论分析
2015-04-04 16:35
495 查看
[align=center]如何快速判断一个整数是否可以整除另一个整数的理论分析
[/align]
引用出处: 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
[align=left]如果一个数的个位数加10位数的2倍加上百位数的4倍能被8整除,则这个数能被8整除[/align]
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
[/align]
引用出处: 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
[align=left]如果一个数的个位数加10位数的2倍加上百位数的4倍能被8整除,则这个数能被8整除[/align]
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
相关文章推荐
- 如何快速判断一个整数是否可以整除另一个整数的理论分析
- 如何快速判断一个整数是否可以整除另一个整数的理论分析
- python判断一个数是否能被另一个整数整除
- 2个二叉树A、B,树的每个节点上都有一个整数值。如何判断A与B是否其中一个是另一个的子树?
- 描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
- 给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- 判断一个整数x是否可以表示成n(n>=2)个连续正整数的和
- 写一个程序,接收两个整数a和b,并判断a是否能被b整除,输出判断结果。
- 算法面试题之判断整数是否可以被3整除
- 不使用%和/,判断一个整数是否能被3整除
- 面试题:给40亿个不重复的无符号整数,没排过序,给一个无符号整数如何快速判断这个数是否在这40亿个数中
- 题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
- 如何用最简单最快的方法判断一个BMP图片是否为黑白图片?我现在是全图片scanline 然后再加以分析,太慢了,有没有直接的函数可以做到呢?
- 转:整除运算, 写一个程序,接收两个整数a和b,关判断a是否能被b整除,输出判断结果
- 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- JAVA--第十周作业编写之一个Teacher类负责给出算术题目,随机给出两个整数并进行运算,并判断回答者的答案是否正确;编写一个GUI类ComputerFrame,回答者可以通过GUI看到题目并给出
- java中如何判断一个数是否为正整数(多种种方式比较有意思)对时间处理也可以
- 写一个函数,判断一个int型的正整数是否是2的幂,即是否可以表示成2^X的形式(不可以用循环)
- 如何判断一个整数x是否可以表示成n个连续正整数的和
- 杭电5505GT and numbers(判断一个数通过累乘他的因子是否可以得到另一个数)