У меня есть два алгоритма для печати первого числа фибоначчи с 1000 цифрами, но, похоже, я что-то упускаю.Найти индекс числа фибоначчи с 1000 цифрами (PE # 25)
Algo 1
public class ab{
public static void main(String[] args){
float phi = (float) 1.618033989;
float curr = 1;
float noOfDigits = 0;
float ans;
float fiveSqrt = (float) Math.sqrt(5);
while(noOfDigits< 1001){
noOfDigits = (curr*Math.log10(phi)) - Math.log10(fiveSqrt);
System.out.println("curr : " + curr + "Digits : " + Math.round(noOfDigits));
curr++;
}
}
}
Output
Его выход его довольно долго, но в конце концов он читает:
curr : 4781.0Digits : 999
curr : 4782.0Digits : 999
curr : 4783.0Digits : 999
curr : 4784.0Digits : 999
curr : 4785.0Digits : 1000
curr : 4786.0Digits : 1000
curr : 4787.0Digits : 1000
curr : 4788.0Digits : 1000
curr : 4789.0Digits : 1000
curr : 4790.0Digits : 1001
Кажется, 4785 ответ, но оснастки! его неправильным. Поэтому я попытался более математический подход, решая уравнение Вольфрама в обратном порядке.
ans = (1000 + (float) Math.log10(fiveSqrt))/ (float) Math.log10(phi);
System.out.println(ans);
Выход: 4786.6445
Опять же. Я что-то пропустил?
Ermm ... возможно, хотите значение >><< наименьшего числа Фибоначчи с 1000 цифр ... –
Нужна ли число Фибоначчи или порядковый номер этого числа? – laune
Почему вы считаете, что это уравнение даст вам число фибоначчи с определенным количеством цифр? Я помню вычисления числа фибоначчи рекурсивно - не с помощью простого простого уравнения, такого как # нужных цифр, добавленных к константе. Я не вижу, как это может работать, но это не математический сайт. Вы можете попробовать http://math.stackexchange.com. –