project euler problem4
project eulerの第四問目です
左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である. では, 3桁の数の積で表される回文数のうち最大のものを求めよ.
3桁程度なので,愚直にやってOKです.数を真ん中で分けて反転させて……と考え始めるとドツボにハマるので,単純にある数を反転させて,オリジナルな数値と一緒だったら回文であると判定します.
def yield_palindromic():
for i in xrange(1, 1000000):
reverse_i = 1000000 - i
if str(reverse_i) == str(reverse_i)[::-1]:
yield reverse_i
f = yield_palindromic()
def div(n):
for i in range(100, 1000):
for j in range(100, 1000):
if i * j == n:
return True
else:
False
for x in f:
if div(x):
print x
このコード書いたときは思いつかなかったのですが,range関数を反転させるには
for i in reversed(range(1, 100)):
と書いたほうがシンプルです