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

使用Python计算100到200之间质数个数的代码错误排查

代码错误原因

  • 核心逻辑反转:isPrime函数中,当num % i == 0时说明当前数存在除了1和自身之外的因数,不是质数,你当前写的是返回True,逻辑完全写反。
  • 缺少分支返回值:函数没有覆盖所有执行路径的返回结果:如果循环走完都没有找到可整除的因数,说明是质数,应该返回True;同时num <= 1的分支也没有返回值,会默认返回None,后续判断会出错。
  • 区间取值问题:range(100, 200)是左闭右开区间,只会遍历到199,如果题目要求统计包含200的范围,需要改成range(100, 201)。

修复后代码

def isPrime(num):
    if num <= 1:
        return False
    for i in range(2, num):
        if num % i == 0:
            # 存在其他因数,不是质数
            return False
    # 循环跑完没有找到因数,是质数
    return True

def primeNumbers():
    count = 0
    # 要包含200就把200改成201
    for num in range(100, 200):
        if isPrime(num):
            count += 1
    print(count)

primeNumbers()

优化提示

你还可以把循环范围调整为range(2, int(num**0.5)+1),不用遍历到num-1,运行效率会更高。因为一个数如果存在大于它平方根的因数,对应的另一个因数一定小于它的平方根,已经提前完成判断了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:18:02