我已将从x到y(包括)的所有数字都附加到list1中。我现在只需要列表只包含从x到y的素数
def primes(x , y):
list1 = []
for i in range(m, n + 1):
list1.append(i)
for elements in list1:
if elements % 2 == 0:
pos = list1.index(elements)
list1.pop(pos)
return list1
我已经将所有数字从x到y(包括)附加到list1中,并且还摆脱了偶数但我似乎无法摆脱其他不是素数的数字。我现在只需要列表只包含从x到y的素数
例如x = 7,y = 23
list1 = [7,11,13,17,19,23]
提前致谢
答案 0 :(得分:1)
这里有一些提示:您不需要生成x和y之间的整数整数列表,然后删除非素数列表。一种更快的方法是生成小于y
的所有素数,然后删除小于x
的素数。这样,您可以使用先前计算的素数来有效地检查数字是否为素数。
所以,让我们从头开始吧。 2是唯一的偶数素数。所以你可以从2开始并迭代奇数直到y
。如果数字不能被任何先前的素数整除,则该数字将是素数。
对于介于0和y
之间的每个数字,首先假设它是素数。你检查它是否可以被前面的素数整除。如果它是任何素数的倍数,那么你可以停止(break
),因为你知道它不是素数。如果它不是任何先前素数的倍数,则将其添加到素数列表中。
最后,如果您的素数列表在0和y
之间,则删除小于x
的元素。
Python中提供的内容:
def primes(x , y):
l = [2] # list of prime numbers
for n in range(3,y+1,2): # iterations over odd numbers
isprime = True
for e in l:
if n % e == 0:
isprime = False
break
if(isprime):
l.append(n)
return [e for e in l if e >= x]
print(primes(7,23))
# [7, 11, 13, 17, 19, 23]