我的素数查找器只是打印奇数

时间:2016-02-02 19:56:07

标签: python python-2.7

所以我试图编写一个能够找到素数的短程序,并丢弃非素数。这是我写这篇文章的尝试:

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):

但我不确定如何解决它,任何指针?

2 个答案:

答案 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]