Python:从列表

时间:2018-01-31 02:58:42

标签: python list range primes

我是编码的新手,我正在尝试编写一个有点通用的素数程序。与我的不同之处在于,我希望我的程序更有效,并且只检查数字等于,并且包括要检查的数字的平方根,我只希望它检查先前找到的素数。到目前为止,我只完成了第一个标准。

from numpy import sqrt, ceil
for a in range (3, 10000):
     k=0
     b=ceil(sqrt(a))
     for i in range(2, int(b))
          if (a%i==0):
             k=k+1
     if(k<=0):
         print(a)

我认为我需要创建一个数字2的列表,运行程序,并将任何打印的素数附加到列表中。但是,我不知道如何:

1。)确保仅检查所述列表中的数字。

2。)确保只检查通过sqrt(a)的数字。

感谢任何指导

1 个答案:

答案 0 :(得分:0)

您想要记住找到的素数,因此将它们存储在列表中而不是仅仅打印它们。你提到附加的素数;使用primes.append(new_prime)。找到因子后使用break或通过平方根跳转到下一次迭代。

primes = [2]
for tested_number in range(3, 10000, 2): #skip the evens
    is_prime = True # if this is still true after testing, number is prime
    for prime in primes:
        if tested_number%prime == 0:
            is_prime = False
            break
        elif prime>sqrt(tested_number): # no need to check these primes 
            break
    if is_prime:
        primes.append(tested_number)