Project Euler 55 - 答案仅差3(奇怪!)

-2 投票
1 回答
973 浏览
提问于 2025-04-18 05:34

我在解决一个问题(可以在http://projecteuler.net/problem=55找到)时遇到了困难,所以我去找答案。看起来我代码的结果只差了3 (我的结果: 246 , 正确结果: 249)。希望有人能帮我找出错误。我已经尝试了3个小时了……

这是我的代码:

from time import time

def rev(x):
    return int(str(x)[::-1])

def Palindrome(x):
    if x == rev(x): return True
    else : return False

def test(x):
    steps = 0

    while True :
        if not Palindrome(x):
            steps += 1
        else:
            return False
        if steps > 50 :
            return True
        x += rev(x)


def main():
    starttime = time()
    lychrel = 0
    for i in range(1,10000):
        if test(i) : lychrel += 1
    elapsed = time() - starttime 
    print "The answer is %d found in %f seconds"  %(lychrel,elapsed) 

if __name__ == "__main__":
    main()

提前谢谢大家!

1 个回答

5

根据http://projecteuler.net/problem=55上的描述

令人惊讶的是,有些回文数字本身也是Lychrel数字;第一个例子就是4994。

你的代码没有把4994识别为Lychrel数字。

撰写回答