首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从给定的列表中创建质数列表?

如何从给定的列表中创建质数列表?
EN

Stack Overflow用户
提问于 2019-09-03 03:03:21
回答 1查看 335关注 0票数 0

我有一个数字[7, 9, 11, 13, 15, 20, 23]的列表,我需要从给定的列表创建一个质数列表。

我已经写了下面的代码,但结果9 & 15也是质数。我不明白我在这里错过了什么。

代码语言:javascript
复制
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]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-03 03:09:24

如果num % m != 0不意味着num是质数,那么对于所有可能的m值,它都必须为真(可以通过递增到num // 2来减少,甚至可以减少到只到sqrt(num)),为此,您可以使用for ... else块( else块仅在for正常退出时执行,没有break,这只发生在质数上):

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
This is prime 7
This is prime 11
This is prime 13
This is prime 23
[7, 11, 13, 23]
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57761670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档