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
相关产品推荐
相关产品推荐

