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

如何编写返回指定最大值以下质数的函数?代码运行无输出排查

代码问题分析与修复

你这段代码完全没实现质数判断的核心逻辑,运行后没输出是必然的,具体问题和修复方案如下:

核心问题点

  • 循环起始值错误:质数从2开始,你从0遍历,0和1都不是质数,纯做无用功
  • 判断逻辑完全失效:if is_factor == True这行完全写错了,is_factor是函数对象,和True比较永远为False,导致那个return永远不会触发;循环跑完后函数没有返回语句,默认返回None,自然看不到输出
  • 缺失质数判断逻辑:根本没写如何判断一个数是否为质数,只是空循环了一遍

修复后的代码

def is_factor(d, n):
    """ True if `d` is a divisor of `n` """
    return n % d == 0

def return_primes(max_val):  # 别用max当变量名,它是Python内置函数,容易冲突
    result = []
    # 遍历从2到max_val以下的所有数
    for n in range(2, max_val):
        is_prime = True
        # 检查从2到n的平方根之间的数是否能整除n,够到平方根就足以判断质数
        for d in range(2, int(n**0.5) + 1):
            if is_factor(d, n):
                is_prime = False
                break
        if is_prime:
            result.append(n)
    return result

# 测试调用,比如找20以下的质数
print(return_primes(20))  # 会输出 [2, 3, 5, 7, 11, 13, 17, 19]

额外提醒

  • 调用函数后要打印返回值,不然就算函数返回了质数列表,你也看不到输出
  • 遍历到平方根就能判断质数,不用遍历到n-1,能大幅提升效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:10:30