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)
我正在尝试用我的代码找到由两个 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)