我试图找到斐波那契数列中第一个包含N个数字的数(N在500到2000之间)。我尝试使用以下代码实现:
BigInteger num = BigInteger.valueOf(2);
BigInteger num1 = BigInteger.ONE;
BigInteger num2 = BigInteger.ONE;
int record = 0;
BigInteger TEN = BigInteger.valueOf(10);
public BigInteger run()
{
BigInteger temp = BigInteger.ZERO;
while(num2.compareTo(TEN.pow(SomeN - 1)) < 0)
{
if(num2.compareTo(TEN.pow(record + 1)) >= 0)
{
System.out.println(""+record);
record++;
}
temp = num1.add(num2);
num1 = num2;
num2 = temp;
num = num.add(BigInteger.ONE);
}
System.out.println(""+num);
System.out.println(""+num2);
return num2;
}
问题是,当我测试1500位数字时,得到的答案明显是错误的。我不知道答案应该是什么,即使我检查了其附近的答案,以防我的算法误差为10的幂(即我检查了1499位和1501位),但是没有取得任何效果。有人看到问题在哪里吗?
System.out.println(record)
而不需要模仿盲目引用的引号。 - akuhn