Problem2
フィボナッチ数列の項は前の2つの項の和である。最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。
main=print $ sum $ filter even $ tail $ fib [1,1] fib::[Integer]->[Integer] fib xs=if ((head xs) > 4000000) then xs else (fib $ stretch xs) stretch::[Integer]->[Integer] stretch xs = sum (take 2 xs):xs
C
#include <stdio.h> int main(void){ int i1=1,i2=1,i3,sum=0; while(1){ i3=i1+i2; i1=i2; i2=i3; if(!(i1 & 1)){sum+=i1;} if(i1>4000000){break;} } printf("%d\n",sum); }
境界があやしいかも。一応結果は4613732