java - 如何求2的幂的最后一位数字

标签 java biginteger

我正在解决一个问题,要求获得 2^1001 的最后 100 位数字。解决方案必须是在java中并且不使用BigInteger,仅使用int或Long。目前我想创建一个处理 100 位数字的类。所以我的问题是,是否有另一种方法可以使用 int 或 long 来处理溢出以获得 100 位数字。

谢谢大家。

最佳答案

已编辑:我的模运算符偏离了 10 的几个幂(哎呀)

2^1001 的最后 100 位数字是数字 2^1001 (mod 10^100)。

请注意,2^1001 (mod 10^100) = 2*(2^1000(mod 10^100)) (mod 10^100)。

查看模数的属性:http://www.math.okstate.edu/~wrightd/crypt/lecnotes/node17.html

这是 99% 的数学问题,1% 的编程问题。 :)

但是,使用这种方法,您将无法仅使用整数,因为 10^100 不适合 int 或 long。

但是,您可以使用它来查找 2^1001 的最后 10 位数字,然后使用单独的例程来查找接下来的 10 位数字等,其中每个例程都使用此功能...

关于java - 如何求2的幂的最后一位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13547901/

相关文章:

Java:创建 "System"类是一件坏事吗?

c++ - 如何检查 C++ 中的大数是否被 7 除?

string - Groovy 到 Biginteger

java - 有没有更好的方法使用枚举来做到这一点?

dart - 如何在 Dart 2.x 中进行 BigInt 算术,特别是除法?

java - 使用扫描仪捕获/尝试不处理输入不匹配异常?

Javascript/Nodejs 检查某些内容是否为 bigint 类型?

Java输入文本而不是数字时出错

java - 警报管理器未设置特定日期或超过 24 小时的警报

java - alfresco 获取特定用户的用户组成员资格