在 http://projecteuler.net/ 的问题4中,它说:
回文数指从左到右和从右到左读取都相同的数字。由两个2位数相乘得到的最大回文数是9009 = 91 * 99。
请找出由两个3位数相乘得到的最大回文数。
以下是我这里的代码:
def isPalindrome(num):
return str(num) == str(num)[::-1]
def largest(bot, top):
for x in range(top, bot, -1):
for y in range(top,bot, -1):
if isPalindrome(x*y):
return x*y
print largest(100,999)
我应该找到最大的回文数,它输出了580085
,我认为这是正确的,但是项目欧拉不这样认为,我出了什么问题吗?
当我反转for循环时,我没有好好思考,我删除了检查最大值的东西,太傻了。这是可行的代码。
def isPalindrome(num):
return str(num) == str(num)[::-1]
def largest(bot, top):
z = 0
for x in range(top, bot, -1):
for y in range(top,bot, -1):
if isPalindrome(x*y):
if x*y > z:
z = x*y
return z
print largest(100,999)
它输出 906609