Project Euler 137

プロジェクトオイラー
http://projecteuler.net/index.php

Q137.
Fnフィボナッチ数列としたとき、AF(x) = xF1 + xF2 + xF3 + ...とする。
n = AF(x)が自然数であるxが有理数であるようなnの15番目。

(1 - x - x2)A = x
Ax2 + (A - 1)x - A = 0
D = (A - 1)2 + 4A2

これが平方数でなければならないから、

D = m2
5A2 - 2A + 1 = m2
(5A - 1)2 - 5m2 = 4

これもペル方程式の一種。
138、139もペル方程式に帰着される。



N = 15
a, b = 1, 1
counter = 0
while True:
a, b = (a * 3 + b * 5) / 2, (a + b * 3) / 2
if a % 5 == 1:
counter += 1
if counter == N:
n = (a - 1) / 5
print n
break