二进制数长度 > Integer.MaxValue模另一个二进制数

问题描述

假设我有两个整数,都太大而无法用 BigInt 表示

对于我的预期用例,假设这些数字的二进制表示超过 Integer.MaxValue 位长。我想使用模算术计算余数,以检查一个数字是否是另一个数字的倍数。

是否有任何合理有效的算法可以让我计算出这样的结果? (这些是大量的数字,需要考虑大量的内存占用,所以我不期望“快”)

如果需要注意,数字 (a) 将是另一个数字 (b) 的模,使得 a > b,即 a % b,最终检查是否a % b == 0

我不是在寻找具体的实现,但我在搜索中唯一能找到的是检查 BitString mod 和 Int 的结果(参见:Modulo of a large Binary String),因此,对于此操作的任何想法或什至更具体的术语都会对我有很大帮助。任何语言的现有算法作为参考将是理想的选择,我将非常感谢能够获得任何此类资源。

编辑:其他一些注意事项:

  • 我不知道数字之间的差异(虽然可以计算)
  • 我可以将较小的数字 (b) 重复添加到累加器,直到结果至少与 a 的位长相同,然后比较每一位,但如果差异很大,这似乎而不是优雅。
  • 我可以计算差值,计算乘以增加 b 的倍数,然后检查是否相等(这似乎是一个合理的解决方案,但我确实希望可能有更聪明的技巧或现有解决方案除此之外,我真的不确定)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)