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

质数检查器代码异常求助:解析错误逻辑与正确实现差异

质数检查代码的逻辑错误分析与核心差异对比

错误代码的逻辑问题

先看你的错误代码:

def prime_checker(number):
    for i in range(2, number):
        if number % i == 0:
          print("It's not a prime number.")
          break
        else:
          print("It's a prime number")
          break
n = int(input("Check this number: "))
prime_checker(number=n)

这里有三个致命逻辑问题:

  • 输入2无输出:当number=2时,range(2,2)是一个空序列,循环根本不会执行,自然没有任何打印语句触发。
  • 87被误判为质数:87=3×29,循环第一次取i=2,87除以2余1,直接进入else分支打印"是质数"然后break终止循环,完全没机会检查i=3这个能整除87的因数。
  • 循环仅执行一次就终止:不管第一个i是否能整除输入值,代码都会通过break直接终止循环,相当于只检查了i=2这一个数,完全没完成质数需要的"遍历所有小于自身的正整数检查是否有因数"的核心逻辑。

两段代码的核心差异

再看正确实现的代码:

def prime_checker(number):
    is_prime = True
    for i in range(2, number):
        if number % i == 0:
            is_prime = False
    if is_prime:
        print("It's a prime number.")
    else:
        print("It's not a prime number.")
n = int(input("Check this number: "))
prime_checker(number=n)

核心差异体现在两个关键点:

  1. 判定逻辑的时机
    • 错误代码:单次循环就直接输出结果并终止,完全没完成完整的因数检查。
    • 正确代码:先预设结果为质数,遍历所有可能的因数过程中,只要找到能整除的数就标记为非质数,等整个循环遍历完成后,再根据标记统一输出结果,确保所有可能的因数都被检查过。
  2. 边界情况的处理
    • 错误代码:处理不了number=2的情况(循环不执行,无输出)。
    • 正确代码:当number=2时,循环不执行,is_prime保持初始的True,最后会正确输出"是质数"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:05:51