如何从给定列表创建素数列表?
How to create a list of prime numbers from a given list?
我有一个数字列表 [7, 9, 11, 13, 15, 20, 23]
,我需要根据给定列表创建一个素数列表。
我写了下面的代码,但结果 9
& 15
也是素数。我没有得到我在这里缺少的东西。
a = [7, 9, 11, 13, 15, 20, 23]
x = []
for i in range (0, len(a)):
num = a[i]
for m in range (2,num):
if (num % m)==0:
break
else:
print('This is prime', num)
x.insert(i, num)
break
我希望输出列表 x 为 [7, 11, 13, 23]
。
如果 num % m != 0
并不意味着 num
是质数,则对于所有可能的 m
值都必须为真(可以通过上升到 num // 2
,甚至可以减少到 sqrt(num)
),为此,您可以使用 for ... else
块(else
块仅在 for
时执行正常退出,没有 break
,这只发生在质数上):
a = [7, 9, 11, 13, 15, 20, 23]
x = []
for num in a: # iterate with the value when you don't need the index
for m in range(2, (num // 2) + 1):
if num % m == 0:
break
else:
print('This is prime', num)
x.append(num) # use `append` to insert at the tail of the list
print(x)
输出:
This is prime 7
This is prime 11
This is prime 13
This is prime 23
[7, 11, 13, 23]
我有一个数字列表 [7, 9, 11, 13, 15, 20, 23]
,我需要根据给定列表创建一个素数列表。
我写了下面的代码,但结果 9
& 15
也是素数。我没有得到我在这里缺少的东西。
a = [7, 9, 11, 13, 15, 20, 23]
x = []
for i in range (0, len(a)):
num = a[i]
for m in range (2,num):
if (num % m)==0:
break
else:
print('This is prime', num)
x.insert(i, num)
break
我希望输出列表 x 为 [7, 11, 13, 23]
。
如果 num % m != 0
并不意味着 num
是质数,则对于所有可能的 m
值都必须为真(可以通过上升到 num // 2
,甚至可以减少到 sqrt(num)
),为此,您可以使用 for ... else
块(else
块仅在 for
时执行正常退出,没有 break
,这只发生在质数上):
a = [7, 9, 11, 13, 15, 20, 23]
x = []
for num in a: # iterate with the value when you don't need the index
for m in range(2, (num // 2) + 1):
if num % m == 0:
break
else:
print('This is prime', num)
x.append(num) # use `append` to insert at the tail of the list
print(x)
输出:
This is prime 7
This is prime 11
This is prime 13
This is prime 23
[7, 11, 13, 23]