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

Python使用for循环输出质数时结果重复问题分析

质数输出重复的原因分析与修正

重复输出的核心原因

你的代码内层循环逻辑完全错误:

  • 对于每个待判断的num,你在内层循环里每遇到一个不能整除的i就立刻打印num,而不是等所有i都检查完毕、确认num没有任何因数后再打印。
  • 比如质数5,内层循环会遍历i=2、3、4,这三个i都满足5%i≠0,所以会连续打印3次5;质数13的内层循环要遍历i=2到12,一共11个i,因此会打印11次13——这就是重复输出的根源。

额外的逻辑问题

代码还会错误输出非质数,比如9:当i=2时,9%2≠0,代码会先打印一次9,直到i=3时才触发break,但错误输出已经产生了。

修正后的代码

正确逻辑是先通过内层循环确认num是质数,再执行打印操作。可以用标志位记录判断结果,同时优化循环范围到num的平方根提升效率:

lower = int(input("enter lower interval: "))
upper = int(input("enter upper interval: "))
for num in range(lower, upper):
    if num > 1:
        is_prime = True
        # 遍历到num的平方根即可,减少循环次数
        for i in range(2, int(num**0.5) + 1):
            if num % i == 0:
                is_prime = False
                break
        if is_prime:
            print(num)

输入2到15时,会正确输出:

2
3
5
7
11
13

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:05:37