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

Python获取2-10素数集合的代码错误排查及修正请求

问题分析与代码修正

你的代码问题出在else的缩进位置,以及遗漏了对素数2的处理:

  • 原代码中else和if (i%j==0)绑定,意味着只要存在一个j不能整除i,就会把i加入集合,这会误把9这类数加进去(比如9%2≠0时就被添加了)
  • 当i=2时,内层range(2,2)是空迭代器,循环不会执行,导致2没有被加入集合

修正后的代码(标记位方式)

prime = set()
for i in range(2, 10):
    is_prime = True
    for j in range(2, i):
        if i % j == 0:
            is_prime = False
            break
    if is_prime:
        prime.add(i)
print(prime)
# 输出 {2, 3, 5, 7}

修正后的代码(for-else结构,贴合原逻辑)

prime = set()
for i in range(2, 10):
    for j in range(2, i):
        if i % j == 0:
            break
    # 内层循环未被break中断时,说明i是素数
    else:
        prime.add(i)
print(prime)
# 输出 {2, 3, 5, 7}

关键说明

  • for-else结构的核心逻辑:当for循环完整遍历完所有元素、未被break中断时,才执行else块代码,完美匹配素数判断逻辑——找不到能整除i的j,说明i是素数
  • 修正后既排除了9这类非素数,也补上了被遗漏的素数2,得到2到10之间的正确素数集合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:13:12