所以我试图编写一个能够找到素数的短程序,并丢弃非素数。这是我写这篇文章的尝试:
def prime(x):
while True:
for y in range(2,x):
if x%y == 0 :
x = x + 1
else:
print( str(x) + " is a prime number")
x = x + 1
return x
prime(x)
try:
x = 3
while True:
x = prime(x)
except:
print("NO MORe")
这个程序只给出所有奇数,而不是给出素数,而且我非常确定它与该行有关:
for y in range(2,x):
但我不确定如何解决它,任何指针?
答案 0 :(得分:1)
这是你可以做的事情的存根。只需创建一个函数来分类数字是否为素数。然后做你想要的任何循环,并检查它是否为素数。如果是,则打印出来。
def isprime(n):
for m in range(2, int(n**0.5)+1): #only check odd numbers and only go till sqrt of the value (you dont need to check all the way till n)
if not n%m:
return False
return True
for m in range(1, 1000):
if isprime(m):
print(m)
答案 1 :(得分:1)
你的算法似乎很混乱。首先,尝试这种方式:
def is_prime(n):
for i in range(2, n):
if n % i == 0:
return False
return True
def primes_up_to(x):
result = [2]
for number in range(3, x):
if is_prime(number):
result.append(number)
return result
print(is_prime(4))
print(primes_up_to(23))
导致:
False
[2, 3, 5, 7, 11, 13, 17, 19]