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

Python质数判断程序问题求助:代码逻辑错误导致结果异常

问题分析与修正

你的代码存在三个核心问题:

  1. break语句会直接终止循环,导致后面的quit()代码永远不会执行——哪怕找到能整除n的i,程序也不会输出“非质数”的结果,直接跳到最后的打印语句。
  2. quit()不是用来输出内容的函数,它的作用是终止程序,你传入的字符串不会被打印出来。
  3. 循环结束后没有区分“找到因数跳出”和“遍历完所有数未找到因数”两种情况,导致无论输入什么都会执行最后的“是质数”打印。

修正方案一:找到因数立即输出并终止程序

n = int(input("Enter a number: "))

for i in range(2, n):
    if n % i == 0:
        print(f"{n} is not a prime number")
        exit()  # 终止程序,避免执行后续代码
print(f"{n} is a prime number")

修正方案二:用标记变量判断状态(更易扩展)

n = int(input("Enter a number: "))
is_prime = True

for i in range(2, n):
    if n % i == 0:
        is_prime = False
        break  # 找到因数后无需继续循环

print(f"{n} is {'a prime number' if is_prime else 'not a prime number'}")

额外优化(可选)

判断质数时,不需要遍历到n-1,只需要遍历到n的平方根即可——如果n有大于平方根的因数,必然对应一个小于平方根的因数。可以把循环范围改成:

range(2, int(n**0.5) + 1)

对于2-101的数字来说,效率提升不明显,但养成这个习惯对大数判断很有用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:25:29