输入指定数字打印所有质数的Python程序运行异常求助
修复打印指定数字以内所有质数的程序
原代码存在的问题
- 缩进错误:Python靠缩进区分代码块,原代码里
if语句、内层for循环和if判断都没正确缩进,会直接触发语法报错。 - 逻辑错误:
- 错误判断输入的
number是否能被a整除,实际要检查的是当前遍历的digits是否为质数,应该用digits % a == 0。 - 内层循环
range(digits)包含了0和1,0会触发除零错误,1能整除所有数,完全没必要纳入判断范围。
- 错误判断输入的
- 输出错误:原代码打印的是输入的
number,而我们需要打印的是符合质数条件的digits。
修正后的代码
number = int(input('Enter a number: ')) if number < 2: print('Number cannot be less than 2') else: for digits in range(2, number + 1): is_prime = True # 遍历到数字的平方根即可,减少冗余计算 for a in range(2, int(digits ** 0.5) + 1): if digits % a == 0: is_prime = False break if is_prime: print(digits)
修正说明
- 给所有代码块补全了正确缩进,符合Python语法规则。
- 增加
else分支,确保输入数字≥2时才执行质数判断逻辑。 - 用
is_prime标记变量跟踪当前数是否为质数,一旦找到能整除它的数,立即标记为非质数并跳出内层循环,提升效率。 - 内层循环优化为遍历到当前数的平方根,避免不必要的计算。
内容的提问来源于stack exchange,提问作者walmart
相关产品推荐
相关产品推荐

