[英]prime numbers in python using for loop and break
我编写了一个python代码来查找2到30之间的素数。但是我的代码没有为2和3进行评估。任何人都可以告诉我这段代码有什么问题吗?
for i in range(2, 30):
for j in range(2, i-1):
if ((i % j) == 0):
print(i, "is not a prime number")
break
else:
print(i, "is a prime number")
break
你的代码的逻辑是错误的。 else
子句应该附加到内部for循环,因此只有在循环耗尽而没有找到除数时才执行它。
for i in range(2, 30):
for j in range(2, i-1):
if ((i % j) == 0):
print(i, "is not a prime number")
break
else:
print(i, "is a prime number")
另请注意,外部循环最多只能运行29,因为上边界不包含在范围内。 内环不包括i - 1
,但这总体上很好,因为任何非平凡的除数都小于i - 1
。
内部循环根本不会输入2和3,因为在这些情况下范围将为空。 这也很好,因为会立即输入else子句。
for i in range(2, 30):
prime = True
for j in range(2, i-1):
if ((i % j) == 0):
prime = False
# print(i, "is not a prime number")
break
# else:
# print(i, "is a prime number")
# break
if prime:
print(i, "is a prime number")
else :
print(i, "is not a prime number")
它不起作用,因为嵌套for
声明:
for i in range(2, 30):
for j in range(2, i-1):
使用range(2, i-1)
,直到i
为4
, range
返回值:
i = 2 --> range(2, 1) # No value
i = 3 --> range(2, 2) # No value
i = 4 --> range(2, 3) # 2
这是因为range
函数返回从第first parameter
(包括)到second parameter
(未包括)的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.