快速判断一个整数是否可以整除另一个整数的理论分析
来源:互联网 发布:张北云计算产业园在哪 编辑:程序博客网 时间: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
- 如何快速判断一个整数是否可以整除另一个整数的理论分析
- 快速判断一个整数是否可以整除另一个整数的理论分析
- python判断一个数是否能被另一个整数整除
- 求一个整数是否可以被3整除
- 判断一个整数是否能被3或5整除
- 判断一个整数是否能被11整除
- 整除一个整数的方法
- 算法面试题之判断整数是否可以被3整除
- 判断一个整数是否是2的整数次幂
- 判断一个整数是否为2的整数次幂
- C语言中运用“非”判断一个整数是否能被5整除
- 不使用%和/,判断一个整数是否能被3整除
- 如何判断一个整数x是否可以表示成n个连续正整数的和
- 判断一个整数是否是2的阶乘的快速算法
- 写一个程序,接收两个整数a和b,并判断a是否能被b整除,输出判断结果。
- ZOJ 1530 构造一个只由01构成的整数,并且可以整除n
- 判断一个整数能否同时被3和5整除
- 判断给定的整数是否是一个2的幂
- Android开发中,dialog的实现方式
- 探索设计模式之----工厂模式
- Linux下安装redis
- application 从web.xml中获取初始化参数
- POJ 2528 Mayor's posters (线段树+离散化处理)
- 快速判断一个整数是否可以整除另一个整数的理论分析
- 编译gcc 4.9到用户目录下
- 杭电ACM——2502
- Xen虚拟机安装Windows8
- iOS中nil 、NULL、 Nil 、NSNull的区别
- Linux内核分析(五)系统调用过程解析
- 大数相乘的两种算法比较
- 2015年阿里巴巴实习生招聘笔试题详细解析(研发大类:Java研发/C++研发)
- [Bash]检测外网IP,不一致时发送邮件。