Roh*_*hit 0 python primes python-3.x
我有一个数字列表,[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
Run Code Online (Sandbox Code Playgroud)
我期望输出列表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)
Run Code Online (Sandbox Code Playgroud)
输出:
This is prime 7
This is prime 11
This is prime 13
This is prime 23
[7, 11, 13, 23]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62 次 |
最近记录: |