问题描述
假设我有两个整数,都太大而无法用 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 (将#修改为@)