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

2024-04-20 11:58:40 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试着写一个简短的程序,找到素数,然后丢弃非素数。这是我试图写的:

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

但我不知道该怎么修,有什么建议吗?你知道吗


Tags: in程序truenumberforifisdef
2条回答

你的算法看起来很混乱。首先,这样做:

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]

这是你能做的事的存根。只要做一个函数来分类这个数是否是素数。然后做任何你想做的循环,检查它是否为素数。如果是的话就打印出来。你知道吗

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)

相关问题 更多 >