|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
begin = int(input('enter begin: '))
end = int(input('enter end: '))
for i in range(begin, end+1):
if i > 1:
is_prime = True
#开始判断
for j in range(2, i):
if i % j == 0:
is_prime = False
break
if is_prime:
print(i, 'is a prime number')
else:
print(i, 'is not a prime number')
else:
print(i, 'is not a prime number')
begin = int(input('enter begin'))
end = int(input('enter end'))
for i in range(begin, end+1):
if i < 3:
print(i, 'is a prime number')
#开始判断
for j in range(2, i):
if (i % j == 0):
print(i, 'is not a prime number')
break
else:
print(i, 'is a prime number')
break
当第二段代码运行到开始判断之后
for j in range(2, i):
if (i % j == 0):
print(i, 'is not a prime number')
break
到这一段的时候 i == 9 枚举j 到3时 i % 9 !=0 这时候就应该 打印 9非素数 然后break了不是吗?
第一段代码则是 第八行之后
for j in range(2, i):
if i % j == 0:
is_prime = False
break
if is_prime:
print(i, 'is a prime number')
else:
print(i, 'is not a prime number')
首先这是枚举到 i= 9 然后 枚举 j到3 i % j == 0 is_prime 被赋False 然后下面判断is_prime 然后不是应该输出'is not a prime number 吗?
对于你的第二段代码,当 `i == 9`,并且在循环到 `j == 3` 的时候,你的判断 `i % j == 0` 是正确的,这会导致代码打印出 "9 is not a prime number",然后退出这个循环。然而,这个循环是嵌套在 `for i in range(begin, end+1):` 循环里的,因此它会在下一次迭代中继续执行,此时 `i == 10`。
对于你的第一段代码,当 `i == 9` 且 `j == 3` 时,`i % j == 0` 的确是成立的,这会导致 `is_prime` 被设置为 `False`,然后退出这个 `j` 的循环。然后代码会根据 `is_prime` 的值打印出 "9 is not a prime number"。这和你的理解是一致的。
这里我想可能存在的误解是,`break` 语句只会退出最近的循环。也就是说,即使在内部 `j` 循环中遇到了 `break`,外部 `i` 循环还是会继续执行的。对于第二段代码,由于每次 `j` 循环结束时都会打印结果,所以可能会出现重复打印的情况。这是因为一旦 `i % j == 0` 不满足,就会执行 `else` 分支并打印出 "is a prime number",即使之前在这个 `i` 的循环中已经打印过 "is not a prime number"。
|
|