Python质数生成器编写问题求助:请帮忙排查代码错误
质数生成器代码错误排查与修正
你的代码存在两个核心问题,导致输出结果不符合预期:
重复打印质数
内层for循环的else块和if i % x == 0同级,这意味着只要当前x不能整除i,就会立刻打印i。比如质数5,会在x=2、x=3、x=4时分别打印一次,同一个质数被重复输出多次。逻辑判定错误
质数的定义是大于1的自然数,且除了1和自身外没有其他因数。你的代码没有遍历完所有可能的因数就提前打印,正确逻辑应该是:当遍历完2到i-1的所有数都不能整除i时,才判定i是质数并打印。
修正方案1:使用标志位
for i in range(1, 101): if i > 1: is_prime = True for x in range(2, i): if i % x == 0: is_prime = False break if is_prime: print(i)
修正方案2:利用Python的for...else结构
Python中for循环的else块会在循环**正常结束(未被break中断)**时执行,刚好匹配质数判定逻辑:
for i in range(1, 101): if i > 1: for x in range(2, i): if i % x == 0: break else: # 循环正常结束,说明无因数,i是质数 print(i)
内容的提问来源于stack exchange,提问作者Soham
相关产品推荐
相关产品推荐

