Python 如何表示所有质数?

2022-09-20 00:16:35 +08:00
 Zoeeeeecho

刚接触 python ,作业题目要求打出输入个数的质数,格式按 10 个一行输出。我的思路是先表示出所有质数然后再按输入的个数打出质数。但我不知道如何表示所有质数。也许我的思路不对,请大家帮我看看呢,谢谢!

3231 次点击
所在节点    Python
24 条回复
filwaline
2022-09-20 15:21:43 +08:00
我来整个活,写个能生成所有质数的函数有何难(滑稽

https://gist.github.com/filwaline/64b3f59feb819e6b337d685d55433483
filwaline
2022-09-20 15:26:32 +08:00
#21 上一条的 gist 的质数生成器绝对是正确的

唯一的问题是如果调用 next 取的质数太多,会触发递归太深错误(但是这是语言 /机器限制,不影响数学形式上正确)
TimePPT
2022-09-20 16:45:07 +08:00
def get_prime_numbers(n: int = 50):
□□□□items = []
□□□□i = 2
□□□□while len(items) < n:
□□□□□□□□if all(map(lambda x: i % x != 0, items)):
□□□□□□□□□□□□items.append(i)
□□□□□□□□i += 1
□□□□return items


def print_items(m, items):
□□□□start = 0
□□□□while start < len(items):
□□□□□□□□print(items[start : start + m])
□□□□□□□□start += m


print_items(m=10, items=get_prime_numbers(50))
julyclyde
2022-09-21 08:46:38 +08:00
其实你这个想法也没啥问题,挺自然的
直接 for 质数列表循环,每次输出一个,每 10 个换行

关键问题是“质数列表”怎么搞。这里你可以尝试用 generator 实现,搭配 memoize decorator 减少耗时

欧耶,可以一下子学到两个 python 特色功能了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/881419

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX