Python - 计算回文数时暂停

Python - long halt while calculating palindrome number

我正在尝试用我的代码找到由两个 3 位数的乘积组成的最大回文数。它适用于 2 位和 3 位数字,但是当我尝试使用 4 位数字时,它不再起作用了。最后没有输出或 "Process finished with exit code 0" 。它就像在无限循环中一样停止了。

palin = 0
for x in range(1, 10000):
    for y in range(1, 10000):
        mult = x * y

        if str(mult) == str(mult)[::-1]:
            if mult > palin:
                palin = mult

print(palin)

我哪里做错了?我刚开始 Python 大约一个月前,所以我的代码仍然无效

这是一个无限循环,你知道,它很长...

但实际上不知何故(也许我的电脑速度很快:-))代码 运行 只用了大约 15 秒...

所以很好。

没有停止,只是很慢。

你的算法不正确。第二个 if 应与 mult = x*y.

处于同一级别

我稍微修改了你的代码。使用下面的代码,您会看到算法不会停止。它只是超级慢。你得等几分钟。

pa = 0
for x in range(1, 10000):
    if x % 100 == 0:
        print(x)
    for y in range(x, 10000):
        m = x*y
        if str(m) == str(m)[::-1]:
            if m > pa:
                pa = m
print(pa)

我将第二个 range(1, 10000) 更改为 range(x, 10000) 以将 1*2 和 2*1 等重复项消除为单个 1*2。

如果您想要加速,请考虑切换到 C 或 C++。

您也可以颠倒迭代顺序以获得极快的速度

for x in range(10000, 0, -1):
    for y in range(10000, 0, -1):
        m = x*y
        if str(m) == str(m)[::-1]:
            print(m)
            exit(0)