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

0-100整数质数标记错位问题求助(附Python代码)

问题分析与修复

你的问题出在testPrime函数的循环逻辑上:在for循环里,只要第一次遇到不能整除的i,就直接返回True,没有完成所有可能的除数检查。比如数字9,i=2时9%2≠0,函数立刻返回True,但9实际能被3整除,不是质数,这就导致Prime标记错位。

修正后的代码

def testPrime(numTest):
    if numTest <= 1:
        return False
    if numTest == 2:
        return True
    # 循环检查到平方根即可,优化效率
    for i in range(2, int(numTest**0.5) + 1):
        if numTest % i == 0:
            return False
    # 所有除数都检查完后才返回True
    return True

def printPrimes(length):
    i = 0
    while i <= length:
        if testPrime(i):
            print(f"{i} Prime")
        else:
            print(i)
        i += 1

printPrimes(100)

关键修复点

  • 移除了for循环内的else: return True,将return True移到循环结束后,确保只有当所有可能的除数都无法整除numTest时,才判定为质数。
  • 优化了循环范围到numTest的平方根,减少不必要的计算,提升函数效率。
  • 调整了打印格式,在数字和Prime之间加了空格,让输出更易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:57:38