Ich versuche, die erste Zahl in der Fibonacci-Folge zu finden, die N Ziffern enthält (wobei N irgendwo im Bereich zwischen 500 und 2000 liegt). Ich versuche, dies mit dem folgenden Code zu tun:
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;
}
Das Problem ist, dass die Antwort, die ich erhalte, wenn ich auf 1500 Ziffern prüfe, offensichtlich falsch ist. Ich weiß nicht, wie die Antwort lauten soll, und ich habe sogar die Antworten in der unmittelbaren Umgebung überprüft, für den Fall, dass mein Algorithmus um eine 10er-Potenz abweicht (d. h. ich habe 1499 Ziffern und 1501 überprüft), aber ohne Erfolg. Weiß jemand, was falsch ist?