Project Euler 141(2)

Problem 141

rを平方部分とそうでない部分に分けます。例えば、24なら22と6です。一般に

r = s2t(tは平方成分を含まない)

と書けます。そうすると、q, dは、

q = sut
d = u2t

元の式は、

n = m2 = qd + r = st(tu3 + s)

ここからtsで割り切れることを示します。
tは平方を含まないから、

t = p1…pl(pk素数 l ≥ 0)

と書けます。spkで割り切れないならtu3 + spkも割り切れないので、右辺はpkを一つしか持たないことになり平方数になりません。よってspkで割り切れます。全ての素因数についてこれが成り立つので、stで割り切れることになります。

とりあえず、3秒になりました。