def prime(upper):
while upper >=2:
for num in range(2, upper + 1):
prime = True
for i in range(2, num):
if (num % i == 0):
prime = False
if prime:
print(num, end=",")
if num == upper: #I think there is a problem here
break
prime(7)
当达到7值时,如何停止此功能 PS:我想用while循环执行这些代码。 顺便说一句,如果你可以使这个代码没有for循环请为我做:) 我很感激你......
答案 0 :(得分:0)
修改强>
我猜我之前的is_prime
功能存在问题。这种方式更快,效果更好:(Source)
def is_prime(n):
""""pre-condition: n is a nonnegative integer
post-condition: return True if n is prime and False otherwise."""
if n < 2:
return False;
if n % 2 == 0:
return n == 2 # return False
k = 3
while k*k <= n:
if n % k == 0:
return False
k += 2
return True
你应该使用这个功能。
编辑前:
我会使用here中的is_prime
函数。你可以用另一种方式。
并且,我会建议您使用此代码:
def is_prime(Number):
return 2 in [Number, 2**Number%Number]
def prime(upper):
print([num for num in range(2, upper + 1) if is_prime(num)])
prime(7)
输出:
[2, 3, 5, 7]
但如果您坚持只使用while
循环,则可以将prime
函数修改为:
def prime(upper):
num = 2
while num <= upper:
if is_prime(num):
print(num, end = ",")
num += 1
然后,输出将是:
2,3,5,7,