特定区间素数查找Python程序故障:素数重复输出问题排查
素数查找程序重复输出问题修复
问题原因
你的代码在内层循环的else分支中直接打印num,这会导致每一次num不能被当前i整除时就输出一次。比如素数29,会被i从2到28依次检查,每次不整除都会打印29,最终重复输出27次。
修正方案
我们需要确认内层循环完整执行完毕(即没有找到任何能整除num的i),再打印num。可以用两种方式实现:
方案1:使用Python的for-else结构(更简洁)
start = 25 end = 50 print(f"25到50之间的素数是:") for num in range(start, end+1): if num > 1: for i in range(2, num): if num % i == 0: break else: # 只有内层循环未被break触发时,才执行此处(说明是素数) print(num)
方案2:使用标记变量
start = 25 end = 50 print(f"25到50之间的素数是:") for num in range(start, end+1): if num > 1: is_prime = True for i in range(2, num): if num % i == 0: is_prime = False break if is_prime: print(num)
验证输出
运行修正后的代码,输出将符合预期:
25到50之间的素数是: 29 31 37 41 43 47
内容的提问来源于stack exchange,提问作者Senthamil selvan
相关产品推荐
相关产品推荐

