如何编写返回指定最大值以下质数的函数?代码运行无输出排查
代码问题分析与修复
你这段代码完全没实现质数判断的核心逻辑,运行后没输出是必然的,具体问题和修复方案如下:
核心问题点
- 循环起始值错误:质数从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
相关产品推荐
相关产品推荐

