我是python的新手,我想创建一个计算素数的程序。为了提高效率,我需要保存素数并使用它们来计算新的素数。我简化了这段代码,因为其他部分与问题无关。
之前我使用过java脚本,我想要这个表达式:
primnumb = [1,3,5,7,11 ... ]
if (number % primnumb[i]) != 0:
primnumb.append(number)
问题是我无法用“primnumb [i]”给我的数字来计算。
我一直在寻找,但
for i in primnumb
对我来说没有多大意义,因为我无法从列表中获得一个特定的元素。
感谢您的帮助!
答案 0 :(得分:0)
您可以使用一些素数初始化列表然后 检查其他人。 我已经用2,3,5和7初始化了素数列表,因此我从8开始了该范围。
代码:
primnumbers = [2,3,5,7]
for i in range (8,100):
flag = True
for items in primnumbers:
if i % items == 0:
flag = False
if (flag):
primnumbers.append(i)
print primnumbers
答案 1 :(得分:0)
假设您希望以有效的方式将素数提高到N.
我正在使用sieve来计算素数,如下所示:
import math
N = 100
flag = [0]*(N+1)
# tells whether a number is prime or not, like flag[i]=0 means i is prime other wise not
primes = []
#list of prime numbers is primes
for i in range(2, int(math.sqrt(N))+1):
if( flag[i] == 0 ): # means i number is prime
for j in range(2*i, N+1, i):
flag[j] = 1 # sets multiple of i as non prime
for i in range(2, N+1):
if( flag[i] == 0):
primes.append(i)
print primes