(51 ^ 43)科学计算器中的Mod77给出2作为输出,
(int)(Math.pow(51,43)%(double)77)给出12,而不是2。
你能帮忙吗?
答案 0 :(得分:2)
final BigInteger base = BigInteger.valueOf(51);
final BigInteger exponent = BigInteger.valueOf(43);
final BigInteger modulus = BigInteger.valueOf(77);
System.out.println(base.modPow(exponent, modulus));
打印2
。
答案 1 :(得分:1)
double
没有足够的精度来保存Math.pow(51,43)
的所有数字。因此,当你接受mod 77
时,答案很容易出现明显的舍入错误。
我建议使用BigInteger
进行任意精度整数运算。
答案 2 :(得分:0)
而不是:
(int)(Math.pow(51,43)%(double)77)
做的:
(int)(Math.pow(51,43))%((double)77)