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

嵌套for循环实现质数筛选功能报错,请求代码修正帮助

问题分析与修复

你的代码存在两个核心问题,导致无法正确筛选质数:

  1. 内层循环范围无效
    range(number, 2) 不会生成任何循环项——Python的range(start, stop)仅当start < stop时才会产生序列,而你的number从2开始,远大于2,所以内层循环完全没执行,prime列表始终为空。

  2. 质数判断逻辑颠倒
    你当前的逻辑是“若number能被div整除就加入列表”,但质数的定义是仅能被1和自身整除,正确逻辑应该是:一个数如果找不到1和自身之外的因数,才是质数。

修复后的代码

n = int(input("Insérer entier inférieur à 100"))
prime = []
if 100 >= n > 1 :
    for number in range(2, n+1):
        is_prime = True  # 先假设当前数是质数
        # 优化:仅检查到number的平方根即可,减少循环次数
        for div in range(2, int(number**0.5) + 1):
            if number % div == 0 :
                is_prime = False  # 找到因数,标记为非质数
                break  # 无需继续检查
        if is_prime:
            prime.append(number)
    print(prime)  # 打印结果验证
else:
    print("请输入大于1且小于等于100的整数")

关键说明

  • 内层循环优化:若number存在大于其平方根的因数,对应的另一个因数必然小于平方根,因此只需检查到平方根就能完成判断,提升效率。
  • 先标记为质数,再通过循环验证推翻假设,完全贴合质数的判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:01:26