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

输入指定数字打印所有质数的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:10:37