wxblsh 发表于 2026-3-11 15:22:14

代码出问题了...


i = 3
while i < 10:
    y = 2
    while y < i:
      if i % y != 0:
            y += 1
      else:
            print(i,'=',i,'*',y)
            y = 2
      i += 1
    else:
      print(i,'是个素数')
i += 1

这是一段我写的判断3-10是不是素数的代码,但是在我的编辑器里面运行不了,我看了好久也没找到问题在哪{:10_266:} ,,他没有报错我没找到问题在哪,有点懵。

FishC 发表于 2026-3-11 15:23:06

你的代码主要问题在于循环控制变量 i 在内层循环中被修改,导致外层循环陷入无限迭代。具体来说,当 i 是素数时,内层循环结束后没有增加 i 的值,因此外层循环条件一直满足,程序卡住。

以下是修正后的代码,使用 while-else 结构来正确判断素数:


i = 3
while i < 10:
    y = 2
    while y < i:
      if i % y == 0:
            print(i, '=', y, '*', i // y)
            break
      y += 1
    else:
      print(i, '是个素数')
    i += 1


主要改动:
1. 将内层循环中的 i += 1 移除,改为在外层循环结束后统一增加 i。
2. 在内层循环发现整除时使用 break 提前退出,这样 else 块只在内层循环完整执行(即没有发现因子)时运行,表示 i 是素数。
3. 修正了打印分解式的格式,使用 i // y 显示另一个因子。

运行这段修正后的代码,会输出 3 到 9 每个数的素数判断结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 代码出问题了...