import math
thevalue = 0
for x in range (100,999):
for y in range (100,999):
mynum=x*y
mynum_str=str(mynum)
for z in range(0,math.floor(len(mynum_str)/2)):
if mynum_str[0+z] != mynum_str[len(mynum_str)-1-z]:
break
else:
if (len(mynum_str)-1-z) -1 == z:
thevalue = mynum
print(thevalue)
Run Code Online (Sandbox Code Playgroud)
给了我580085,这不是正确的答案(假设超过900000)...正在http://projecteuler.net/problem=4 ...关于我哪里出错的提示?
您不需要过复杂的循环来检查数字的回文性质:
# Using extended slice notation to reverse the string
if str(n) == str(n)[::-1]:
print "Palindrome!"
Run Code Online (Sandbox Code Playgroud)
至于完整的解决方案,您的程序只是寻找一个回文数字.有多个回文数字是3位数的乘积.你想要最大的那些.
(当然,这不是完整的解决方案 - 但如果我们只是给你一个项目欧拉挑战的解决方案就没有乐趣;))
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |