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

Python素数判断代码输入99误判为素数,求错误排查与修复方案

代码错误原因分析
  • 核心判断逻辑错误:循环内始终使用num%2==0做整除判断,而非对遍历变量i做判断,本质只实现了奇偶校验,无法识别99这类能被2以外的数整除的非素数。
  • 循环赋值逻辑错误:每次循环都会覆盖prime的取值,即便中途找到了能整除的因数,后续遍历到无法整除的i时也会把prime重新设为True,导致判断结果被覆盖为错误值。
修复方案

调整判断逻辑:初始化prime为True,遍历过程中只要找到任意一个能整除的i就立即将prime设为False并终止循环,无需继续遍历。
修复后代码如下:

num = int(input('Enter a positive no.\n'))
prime = True
if num == 1:
    prime = False
elif num == 2:
    prime = True
else:
    # 优化:只需遍历到数字的平方根即可,大幅提高大数字的判断效率
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            prime = False
            break # 找到因数直接终止循环,避免后续覆盖结果

if prime:
    print('Prime no.')
else:
    print('Not a prime')
测试验证

输入99测试时,循环到i=3时触发99%3==0的条件,prime设为False后直接break,最终输出Not a prime,结果符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:27:03