#include <stdlib.h>
#include <stdio.h>
int main (){
int n, cont, fib, na = 0, nb = 1, sum_even = 0;
printf ("Insert a number and I'll tell you the respective Fibonacci: ");
scanf ("%d", &n);
for (cont = 1; cont < n; cont++) {
na += nb;
nb = na - nb;
fib = na + nb;
if (fib % 2 == 0) {
sum_even += fib;
}
}
printf ("%d\n", sum_even);
return 0;
}
私はプロジェクトオイラー問題2を実行しようとしていたので、このコードを思いつきました。問題は次のとおりです。メモリがオーバーフローしたため、400を超える数またはそれに近い数のフィボナッチ数列のペア数の合計が見つかりません。結果として、フィボナッチ数列で4000000未満のペア数の合計を求めるように求められるため、この演習を解くことはできません。誰か助けてもらえますか?
編集:答えの容量を増やすためにfloatタイプの数値を使用しようとしましたが、1000程度までは機能するようですが、それよりも大きい数値を使用すると、15秒の処理後にbashで-nanエラーが発生します(それが何を意味するのか本当にわかりません)。
#include <stdlib.h>
#include <stdio.h>
int main () {
int n, cont, div;
float sum_even = 0, na = 0, nb = 1, fib;
printf ("Insert a number and I'll tell you the respective Fibonacci: ");
scanf ("%d", &n);
for (cont = 1; cont <= n; cont++) {
na += nb;
nb = na - nb;
fib = na + nb;
div = fib / 2;
if (div % 2 == 0) {
sum_even += fib;
}
}
printf ("%f\n", sum_even);
return 0;
}