Python素数判断函数无输出、运行超时问题排查求助
故障根因
代码出现了无限循环问题:
- 当输入的数字是素数时,
for循环遍历完range(2,num)的所有值都不会触发prime=False的逻辑,prime会始终保持True的初始值 - 外层
while prime==True的条件永远成立,程序不会退出循环,最终导致运行超时 - 原本的逻辑不需要外层
while循环,直接通过for循环的校验结果即可判断素数
修复后的正确代码
def prime_check(num): # 处理小于2的边界情况,小于2的数都不是素数 if num < 2: return False for i in range(2, num): if num % i == 0: return False return True
可选项:性能优化
如果需要校验大素数,可以优化遍历范围,只需遍历到num的平方根即可,大幅减少循环次数:
import math def prime_check(num): if num < 2: return False # 遍历到sqrt(num)就足够完成素数判断 for i in range(2, int(math.sqrt(num)) + 1): if num % i == 0: return False return True
内容的提问来源于stack exchange,提问作者Sridhar Gopal
相关产品推荐
相关产品推荐

