对于不同的数字是否有任何通用方法或特定方法,我们可以通过它们知道其二进制表示中的给定数字n
可被另一个数字m
整除?
例如:
n=23 (00010111)
m=3
如果在偶数和奇数位置设置的位数之差可以被3整除,则该数字可以被3整除。
所以3 - 1 = 2
不能被3整除,因此23不能被3整除。
我想询问是否还有其他方法可以找到一个数字是否可以被2,4,5,6,7等整除。?
答案 0 :(得分:5)
您找不到所有这些规则的简单规则。以下是如何创建此类规则的想法。
让我们先谈谈基数10.想象一下数字abcdefg
。这个数字实际上是:
g + 10*f + 10^2*e + 10^3*d + 10^4*c + 10^5*b + 10^6*a
众所周知,(a+b)%c
等于(a%c+b%c)%c
且(a*b)%c
等于((a%c)*(b%c))%c
(您可以更好地了解已知congruence的这些属性)
所以,让我们看看剩下的数字:
2
(g + 10*f + 10^2*e + 10^3*d + 10^4*c + 10^5*b + 10^6*a)%2 =
(g%2 + 0 + 0 + 0 + 0 + 0 + 0)%2 =
g%2
因此,一个数字可以被2整除,如果它的最后一位数可被2整除
3
(g + 10*f + 10^2*e + 10^3*d + 10^4*c + 10^5*b + 10^6*a)%3 =
(g%3 + f%3 + e%3 + d%3 + c%3 + b%3 + a%3)%3 =
... repeat operation for this number
因此,一个数字可以被3整除,它的数字之和可以被3整除
4
(g + 10*f + 10^2*e + 10^3*d + 10^4*c + 10^5*b + 10^6*a)%4 =
(g%4 + 2*f%4 + 0 + 0 + 0 + 0 + 0)%4 =
... repeat if bigger than 4
因此,一个数字可以被4整除,如果它的最后一个数字再加上它的最后一个数字可以被4整除之前的两倍
5
(g + 10*f + 10^2*e + 10^3*d + 10^4*c + 10^5*b + 10^6*a)%5 =
(g%5 + 0 + 0 + 0 + 0 + 0 + 0)%5 =
g%5
因此,如果一个数字的最后一个数字是0或5
...
11
(g + 10*f + 10^2*e + 10^3*d + 10^4*c + 10^5*b + 10^6*a)%11 =
(g%11 - f%11 + e%11 - d%11 + c%11 - b%11 + a%11)%11 =
(g - f + e - d + c - b + a)%11 =
... repeat operation for this number
(注意10%11可以被视为-1(它们是一致的))
等等!
正如你所看到的,在基数10中,11的余数给出了与基数2中3的余数相同的公式。这不是巧合。
现在让我们假设我们的数字在基数2中。因此abcdefg
评估为:
g + 2*f + 2^2*e + 2^3*d + 2^4*c + 2^5*b + 2^6*a
查找公式的方法与上面完全相同。这里唯一让它更简单的是,如果除数大于1,那么带除数的所有数字的余数就是数字本身(因为数字只有0或1),所以所有digit%divisor
s变得简单digit
。这根本不会改变方法论。
让我们看看我们号码的剩余部分
2
(g + 2*f + 2^2*e + 2^3*d + 2^4*c + 2^5*b + 2^6*a)%2 =
(g + 0 + 0 + 0 + 0 + 0 + 0)%2 =
g
因此,如果数字的最后一位为0
3
(g + 2*f + 2^2*e + 2^3*d + 2^4*c + 2^5*b + 2^6*a)%3 =
(g - f + e - d + c - b + a)%3 =
... repeat operation for this number
4
(g + 2*f + 2^2*e + 2^3*d + 2^4*c + 2^5*b + 2^6*a)%4 =
(g + 2*f + 0 + 0 + 0 + 0 + 0)%4 =
因此,一个数字可以被4整除,如果它的最后一个数字再加上它的最后一个数字可以被4整除之前的两倍
5
(g + 2*f + 2^2*e + 2^3*d + 2^4*c + 2^5*b + 2^6*a)%5 =
(g + 2*f - e - 2*d + c + 2*b - a)%5 =
... repeat operation for this number
依此类推
答案 1 :(得分:0)
由于没有一般方法可以找出一个数字是否可以被另一个数字整除(例如参见here),显然没有办法以二进制表示法找到它。