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

Python列表质数验证函数异常修复求助:代码运行结果不符预期

修复质数判断代码的问题

咱们来一步步拆解你代码里的问题,然后把它修复好~

原代码的核心问题:

  • 索引逻辑混乱:函数isprime没有遍历vetor列表,反而用循环变量i去取vetor[i+1],导致取到错误的数值甚至可能触发索引越界
  • 质数判断逻辑错误:i % i == 0这个条件永远成立——任何数除以自己余数都是0,根本无法区分质数
  • 函数无返回值:isprime没有定义返回值,所以执行print(isprime())会输出None
  • 变量作用域冲突:同一个变量i既当循环计数器,又当列表索引,导致逻辑彻底错乱

修复后的完整代码:

vetor = [2,3,4,5,11,15,20]

def isprime(num):
    # 质数定义:大于1,仅能被1和自身整除
    if num <= 1:
        return False
    # 优化:只需遍历到num的平方根,减少不必要的计算量
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True

# 遍历列表中的每个数字,逐个判断并输出结果
for number in vetor:
    if isprime(number):
        print(f'The number {number} is prime')
    else:
        print(f'The number {number} is not prime')

修复要点说明:

  • 函数参数化:让isprime接收单个数字参数,实现单独判断每个数,代码复用性更强
  • 修正判断逻辑:先排除小于等于1的非质数,再检查从2到该数平方根的所有数(如果一个数有大于平方根的因数,那对应的另一个因数一定小于平方根,这样能大幅减少计算量)
  • 遍历列表逻辑:用for number in vetor直接遍历列表元素,完全避免索引操作带来的混乱
  • 分离职责:函数只负责返回是否为质数的布尔值,打印逻辑放到外部,代码结构更清晰、易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:30:54