对于不同的数字,我们是否有任何一般的方法或特定的方法,通过这些方法我们可以知道一个给定的数字n在它的二进制表示中可以被另一个数字m整除。
例如:
n=23 (00010111)
m=3如果设置在偶数和奇点位置的位数之间的差值可被3整除,则该数字可被3整除。
因此,3 - 1 = 2不能被3整除,因此23不能被3整除。
我想问一问,是否还有其他方法可以找出一个数字是否可以被2,4,5,6,7等除以?
发布于 2012-05-30 19:00:50
你不能为他们找到一个简单的规则。以下是如何创建这样的规则的想法。
让我们先来谈谈基数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(您可以更好地了解了解同余的这些属性)
因此,让我们通过以下方法来查看我们的剩余数字:
正如你所看到的,在基数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都变成了digit。这根本改变不了方法学。
让我们看看剩下的数字
发布于 2012-05-30 18:43:08
由于找不到一个数字是否可以被另一个数字整除的一般方法(例如,请参阅这里 ),因此显然无法在二进制表示中找到它。
https://stackoverflow.com/questions/10822158
复制相似问题