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

check whether infinitely long binary number is divisible by 3 or not

一个无限长的0和1的流来了,你要看看到目前为止形成的数字是否能被3整除。

我通过找到二进制数的十进制等价物然后将所有数字相加并确定该总和是否可以被 3 整除来尝试它。但我知道这是错误的方法,因为数字无限长,所以一段时间后数字将超出范围。那么解决这个问题的方法是什么。

另一种方法是找出偶数位置的集合位和奇数位置的集合位,如果奇数和偶数位置的集合位总数之差可被 3 整除,则数字将被 3 整除。 但这里也在求和时间之后数字将超出范围。

有没有更好的方法?

只需跟踪 x = 当前数字 mod 3.

如果b是下一位,更新:

x = (2*x + b) % 3

x = 0当前数能被3整除