检查无限长的二进制数是否可被3整除

时间:2015-08-19 17:57:26

标签: binary division

无限长的0和1的流正在到来,你必须弄清楚到目前为止形成的数字是否可以被3整除。

我通过查找二进制数的十进制等值然后对所有数字求和并找出该总和是否可被3整除来尝试它。但我知道这是错误的方法因为数字是无限长的所以在一段时间后数字将超出范围。那么这样做的方法是什么。

另一种方法是找出偶数位置设置位和奇数位置设置位,如果奇数和偶数位置的设置位总数的差异可以被3整除,那么数字将被3整除。 但是在此之后,总和时间也将超出范围。

还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

跟踪x =当前数字mod 3.

如果b是下一位,请更新:

x = (2*x + b) % 3

x = 0当前数字可被3整除时