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

Python指定范围质数生成代码错误输出15的原因分析

质数判断代码错误原因分析

15被误输出的核心原因

你的代码内层判断逻辑的缩进和执行顺序存在错误:

  • 你代码里的else块是和if(i%n == 0)对齐的,属于该if判断的分支。内层循环第一次取n=2进行判断时,只要i%n != 0,就会直接进入else分支,打印当前数值、计入总和、并直接break终止内层循环,根本不会执行后续n=3、n=4等其他除数的检测。
  • 以15为例:第一次判断15%2 == 1,满足else分支触发条件,直接被判定为质数输出,完全不会运行到n=3的检测步骤,所以你在if(i%n == 0)里加的打印语句根本没机会触发。

修正方案

利用Python for循环的else特性:只有循环完整跑完、没有被break主动打断时,才会执行else块,代表所有除数都检测完毕且没有能整除当前值的数,此时才判定为质数。修正后的代码如下:

def sqrt(n):
    return n**0.5

# find primes
def primes(minNum, maxNum):
    primes_sum = 0
    for i in range(minNum, maxNum):
        current_max = int(sqrt(i))
        for n in range(2, current_max + 1):
            if(i%n == 0):
                break
        # else和内层for对齐,仅循环未被break时触发
        else:
            primes_sum += i
            print(i)
            
    print('\nSum of all primes: ', primes_sum)
        
primes(10, 20)

修正后输出结果为11、13、17、19,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:45:01