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

Python查找下一个素数代码运行结果错误问题求助

问题原因分析
  • 核心错误是内层for循环的else代码块缩进错误:你当前把else和if (next % i) == 0对齐,导致只要第一个除数(i=2)不能整除当前数,就会直接返回该数。比如输入32时第一个检查的数是33,33%2=1≠0,就直接错误返回33,没有继续检查后续的i=3等除数。
  • 变量名使用了Python内置函数名next,会覆盖内置功能,属于不规范写法。
  • 导入了math模块但未使用,素数判断只需遍历到目标数的平方根即可,能大幅提升执行效率。
  • 仅查找输入值后200个范围内的数,极端情况下会遗漏正确结果。
修正后的可运行代码

优化效率版本

import math

def nextprime(n):
    if n < 0:
        raise ValueError("请输入非负整数")
    # 从n+1开始逐个检查,无范围限制
    current = n + 1
    while True:
        if current > 1:
            is_prime = True
            # 只需要遍历到current的平方根即可完成素数判断
            for i in range(2, int(math.sqrt(current)) + 1):
                if current % i == 0:
                    is_prime = False
                    break
            if is_prime:
                return current
        current += 1

num = int(input("Enter a positive number:"))
print(nextprime(num))

最小改动版本(保留原代码结构仅调整缩进)

num = int(input("Enter a positive number:"))   

import math

def nextprime(n):
    if n < 0:
      raise ValueError
  
    for current_num in range(n + 1, n +200):
        if current_num > 1:
            for i in range(2, current_num):
                if (current_num % i) == 0:
                    break
            # else和内层for对齐,只有for循环正常结束(未被break中断)才执行,代表当前数是素数
            else:
                return current_num
测试效果

输入32时,两个版本都会正确返回37。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:15:04