|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码:
print('2是素数')
for i in range(2,10):
for j in range(2,i):
if i % j == 0:
print(i,'=',j,'*',i//j)
break
else:
print(i,'是素数')
break
运行结果:
2是素数
3 是素数
4 = 2 * 2
5 是素数
6 = 2 * 3
7 是素数
8 = 2 * 4
9 是素数
这段代码会输出9是素数的原因是因为在判断是否为素数的循环中有一个`else`语句被放错位置了。应该在内层循环结束后再进行判断。
以下是修正后的代码:
- print('2是素数')
- for i in range(2, 10):
- for j in range(2, i):
- if i % j == 0:
- print(i, '=', j, '*', i // j)
- break
- else:
- print(i, '是素数')
复制代码
修正后的代码将 `else` 语句放在了外层循环的行尾,这样只有当内层循环没有触发 `break` 结束时,才会执行 `else` 语句,即输出素数。运行修正后的代码会得到正确的结果:
2是素数
3 是素数
4 = 2 * 2
5 是素数
6 = 2 * 3
7 是素数
8 = 2 * 4
9 = 3 * 3
总而言之,你的代码如果第一轮if不符合的话(即不是2的倍数)时,就会输出 是素数
这当然不是你想要的结果,所以我们把else的缩进放在跟第2层for循环一样,这样如果整个for循环都没有执行的话才会输出是素数
求最佳答案
|
|