我想知道在二进制系统中有没有除以3的可除规则。
例如:在十进制中,如果数字和除以3,则数字除以3。对于exmaple:15 -> 1+5 = 6 -> 6
除以3,所以15除以3。
重要的是要明白,我没有寻找一个代码,将这样做。bool flag=(i%3==0);不是我要找的答案。我在寻找一些对人类来说很容易做的事情,就像十进制法则一样。
最佳答案
请访问以下网站:How to Tell if a Binary Number is Divisible by Three
基本上是从右边数非零奇数位和非零偶数位。如果它们的差可以被3整除,那么这个数可以被3整除。
例如:15 = 1111
有2个奇数和2个偶数非零位。差别是0。因此15
可以被3
整除。185 = 10111001
有2个奇数非零位和3个偶数非零位。差别是1。因此185
不能被3
整除。
解释
考虑2^n
值。我们知道2^0 = 1
是一致的。因此1 mod 3
是congurent2^1 = 2
mod 3。继续这个模式,我们注意到对于n是奇数的2*1 = 2
,2^n
是一致的2^n
,对于偶数的1 mod 3
,它是一致的2 mod 3
。因此-1 mod 3
是一致的10111001
mod 3,它是一致的1*1 + 0*-1 + 1*1 + 1*-1 + 1*1 + 0*-1 + 0*1 + 1*-1
。因此185不能被3整除。