Python素数计算器

2 投票
3 回答
2418 浏览
提问于 2025-04-18 10:00
prime = [2]
while len(prime) <= 1000:
    i=3
    a = 0
    for number in prime:
        testlist= []
        testlist.append(i%number)
    if 0 in testlist:
        i=i+1
    else:
        prime.append(i)
        i=i+1
print(prime[999])

我正在尝试写一个程序,用来计算质数,这是我在线课程的作业。这个程序一直在运行,但我找不到代码中导致它无限循环的地方。

质数是指只能被1和它自己整除的数字。

我的逻辑是,如果一个数字能被它之前的质数整除,那么它就不是质数。

3 个回答

0
def prime_checker(number):
    stop = False
    prime = True
    n = 2
    while stop == False and n < number:
        if (number) % n == 0:
            prime = False
            stop = True
        n += 1
    if prime == True:
        print("It's a prime number.")
    elif prime == False:
        print("It's not a prime number.")

prime_checker(11)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

0

我还没测试过,但你可以像下面这样创建一个方法:

def get_prime_no_upto(number):
  start = 2
  primes = list(range(start,number)).to_a
  for no in range(start,number):
    for num in range(start,no):
      if ( no % num  == 0) and (num != no):
        primes.delete(no)
        break
  primes

然后可以像这样使用它:

print primeno(100)

祝好!

2

正如你问题下的评论所提到的,你的代码里有几个错误。

下面是一个可以正常工作的代码版本。

prime = [2]
i = 3
while len(prime) <= 1000:
    testlist = []
    for number in prime:
        testlist.append(i % number)
    if 0 not in testlist:
        prime.append(i)
    i = i + 1
print prime

撰写回答