http://projecteuler.net/index.php?section=problems&id=503
いろいろ工夫することによって高速化を図った。F(1012)まで計算したら、O(N1/2)っぽくなった。普通の解法ならO(N)である。
F(10^6) : 0.031sec F(10^7) : 0.090sec F(10^8) : 0.146sec F(10^9) : 0.296sec F(10^10) : 1.893sec F(10^11) : 4.472sec F(10^12) : 12.769sec
また、計算量を減らすことにより精度が上がった。F(106)で誤差4e-14程度、F(109)で5e-12程度になった。
フォーラムに書いた。