回文(欧拉计划)

Palindrome (euler project)

我正在尝试用 Python 解决这个问题:

"找出两个 3 位数乘积的最大回文数。" 这是我的代码:

list_number = reversed(range(10000, 998002))


def check_number(x): 
    for element in reversed(range(100, 1000)):
        while True:
            if x >= 100:
                if element * x == i:
                    print(i)
                    break
                else:
                    x -= 1
                    continue
            else:
                break


for i in list_number:    
    if str(i) == str(i)[::-1]:
        check_number(999)
    else:
        continue

该代码适用于 2 位数字,但不适用于 3 位数字。 有人能告诉我哪里不对吗?

你的代码写得非常糟糕,但真正的问题是在语句 x -= 1 中: x 的值在内部循环的每次迭代和 first 内循环,x 为 99。这使得条件 if x >= 100 对于外循环的所有后续迭代都为假。

for element in reversed(range(100, 1000)) 之后立即添加 x=999。或者,更好的是,学习一些好的编程并完全重写程序。