我正在搜索a,b和c,这样a ^ 5 + b ^ 5 = c ^ 5。我的程序产生2000 ^ 5 + 1 = 2000 ^ 5。为什么会发生这种情况以及如何解决?
public class Euler {
public static void main(String[] args) {
long i=0;
int power = 5;
int a1 = 1;
int a2 = 2000;
boolean isSolved = false;
long sumOfPowers = 0;
double root = 0;
long roundDown = 0;
long roundDown2Power = 0;
sumOfPowers = (long) (Math.pow(a1, power) + Math.pow(a2, power));
root = Math.pow(sumOfPowers, 1.0/power);
roundDown = (long) root;
roundDown2Power = (long)Math.pow(roundDown, power);
if (sumOfPowers == roundDown2Power) {
isSolved = true;
System.out.println(isSolved + " " + a1 + "^" + power + " + " + a2 + "^" + power + " + " + "^" + power + " = " + roundDown + "^" + power );
}
}
}
我正在寻找欧拉猜想的反例。我使用这种方法获得了第五次幂。一次错误寻找欧拉猜想的反例27 ^ 5 + 84 ^ 5 + 110 ^ 5 + 133 ^ 5 = 144 ^ 5(Lander&Parkin,1966),这需要6秒钟。我正在尝试获取5800 ^ 4 + 217519 ^ 4 + 414560 ^ 4 = 422481 ^ 4(Roger Frye,1988),但是在测试此模块时,我发现我的程序产生2000 ^ 5 + 1 = 2000 ^ 5。这是一个问题。
您应该尝试在Java中使用BigInteger lib。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句