我正在解决一个问题,要求获得 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/