我不明白为什么 mod 的计算不正确,
我有 a=23
、b=86609
、c=17
其中 (d=a^c mod b
)。所以根据计算器计算结果应该是16559
但我得到 49432?
public class Mod {
public static void main(String[] args) {
int a=23;
int b=86609;
int c=17;
double d= (Math.pow(a,c)%b);
System.out.print(d);
}
}
最佳答案
问题不在于模数部分。一旦进入 pow 部分,就会得到错误的结果。
23^17 准确地说是 1.41050039560662968926103 × 10^23。看看 Java 认为它等于什么:
1.4105003956066297E23
显然这还不够精确。
这个问题的解决方案是BigInteger
:
BigInteger a = new BigInteger("23");
BigInteger b = a.modPow(new BigInteger("17"), new BigInteger("86609"));
System.out.println(b);
记住导入java.math.BigInteger;
!
关于java - 在Java中计算模数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45734942/