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

如何用带range的嵌套for循环优化欧拉计划第8题的乘积计算代码

欧拉计划第8题:13位相邻数字最大乘积优化实现

核心问题修正

你之前初始化product_13 = 0是关键错误——乘法中任何数与0相乘结果都是0,所以不管后续计算多少数字,乘积都会保持0。正确的初始化值应该是1,因为1是乘法的单位元,不会改变乘积的初始状态。

嵌套循环实现方案

用嵌套range循环遍历所有可能的13位数字组合,代码结构清晰、可读性强,具体实现如下:

# 替换为你的1000位数字字符串
digit_str = "73167176531330624919225119674426574742355349194934..."

max_product = 0
# 外层循环:遍历所有13位数字的起始索引(最后一个起始位需留够13个数字)
for start in range(len(digit_str) - 12):
    current_product = 1  # 初始化乘积为1,而非0
    # 内层循环:计算当前起始位开始的13个数字乘积
    for i in range(start, start + 13):
        digit = int(digit_str[i])
        current_product *= digit
    # 更新最大乘积
    if current_product > max_product:
        max_product = current_product

print("最大乘积结果:", max_product)

效率优化(可选)

如果数字字符串中包含0,可以在计算过程中提前终止内层循环,避免无效计算:

max_product = 0
for start in range(len(digit_str) - 12):
    current_product = 1
    for i in range(start, start + 13):
        digit = int(digit_str[i])
        if digit == 0:
            current_product = 0
            break  # 遇到0直接停止当前组计算,节省时间
        current_product *= digit
    if current_product > max_product:
        max_product = current_product

优势说明

相比手动逐个索引的写法,这种方案:

  • 代码结构模块化,逻辑一目了然
  • 若后续需要调整相邻数字的个数(比如改成5位),只需修改start + 13和len(digit_str)-12中的数字即可,维护成本极低

内容的提问来源于stack exchange,提问作者Just doing my best

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:25:24