You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求解欧拉计划第4题:两段Python代码为何一正常一异常?

欧拉计划第4题:两段代码差异分析

两段代码的核心区别在于是否对回文数的大小进行判断,这直接导致了结果的不同:

第一段代码的逻辑(正确)

这段代码维护了一个highest变量,初始值为0。每次计算出两个三位数的乘积后,会做两个判断:

  1. 该乘积是否是回文数
  2. 该乘积是否大于当前记录的highest

只有同时满足这两个条件时,才会更新highest的值。这样遍历所有可能的乘积时,highest始终保存着当前找到的最大回文数,最终输出的就是全局最大的结果。

第二段代码的问题(错误)

这段代码没有判断乘积的大小——只要遇到回文数,就直接把product变量覆盖为当前的乘积。

由于循环是按100到999的顺序遍历所有三位数,最后一次被遍历到的回文数必然不是最大的(比如最大的回文数906609会在遍历过程中被更早找到,但后续遍历到的更小回文数会覆盖product的值)。最终输出的只是最后一个被遍历到的回文数,而不是题目要求的最大回文数。

第二段代码的修正方案

只要在更新product时增加“当前乘积是否更大”的判断即可:

product = 0
def PalDetect(number):
    return str(number) == str(number)[::-1]

ThreeDigits = [i for i in range(100, 1000)]
for i in ThreeDigits:
    for j in ThreeDigits:
        current_product = i * j
        if PalDetect(current_product) and current_product > product:
            product = current_product

print(product)

内容的提问来源于stack exchange,提问作者Hex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 11:02:45