Python 如何表示所有质数?

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

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

3230 次点击
所在节点    Python
24 条回复
Zoeeeeecho
2022-09-20 00:18:00 +08:00
Zoeeeeecho
2022-09-20 00:20:20 +08:00
第一张图是题目要求,第二张图是我的代码,第三张是 output
coderluan
2022-09-20 00:30:32 +08:00
思路错了,首先你写个函数 fun 判断数字是否是质数,然后 while 循环调用这个函数,参数从 1 开始递增,返回值是 true ,计数器+1 ,当计数器达到输入的要求,跳出循环。
hsfzxjy
2022-09-20 00:40:34 +08:00
luckycat
2022-09-20 00:43:19 +08:00
能找到素数公式的话,那可是牛逼了。
wudiiiii
2022-09-20 00:43:37 +08:00
首先得需要一个循环,在这个循环中不断运行函数 getBiggerPrime(x),循环结束的条件是已经得到了足够的质数。
Zoeeeeecho
2022-09-20 00:45:32 +08:00
@hsfzxjy 天啦,太谢谢了,苯刚学 python 第一次发帖的人狠狠感动了
JohnBull
2022-09-20 01:10:29 +08:00
你咋不上天呢?
yaoyao1128
2022-09-20 01:11:03 +08:00
关键词:筛法求素数
yaoyao1128
2022-09-20 01:16:31 +08:00
oi 基础算法之一,优化方式有三点,一只算奇数,二只至平方根,三减少重复
xiri
2022-09-20 01:31:50 +08:00
你这不是不会 python 的问题,是完全没有一点数学常识啊,表示出所有素数,,,,
Zoeeeeecho
2022-09-20 01:40:20 +08:00
@xiri 不不,我不是找规律找公式的意思,最开始是想 def 一个函数来判断所有数是否是质数而不是我输入数字来判断
xuanbg
2022-09-20 08:18:42 +08:00
@Zoeeeeecho 你这不是一样的么。。。输入数字的范围,通过循环一个个判断是否质数。是的话放到数组里面,完成后输出数组。
visper
2022-09-20 08:58:27 +08:00
这是数学家研究的问题. 你弄个循环判断一下一个函数是不是质数然后从 2 开始要多少个打多少个就行了.
em70
2022-09-20 10:38:39 +08:00
你先别管 python,现在就一张纸一支笔,你如何计算素数?如果你不知道,说明数学知识不过关,先研究数学上如何计算素数的(初中数学知识)
matthewzhong
2022-09-20 11:03:06 +08:00
krixaar
2022-09-20 11:08:08 +08:00
https://raw.githubusercontent.com/koorukuroo/Prime-Number-List/master/primes.json
这里面有一百万个,直接 json.load ,需要几个 print 几个,超过一百万 raise 个 error 就好,性能超棒的
MoYi123
2022-09-20 11:23:18 +08:00
def prime(n):
____memo = [1 for _ in range(n)]
____ret = []
____for i in range(2, n):
________if memo[i]:
____________ret.append(i)
________j = 0
________while j < len(ret) and i * ret[j] < n:
____________memo[i * ret[j]] = False
____________if i % ret[j] == 0:
________________break
____________j += 1
____return ret


欧拉筛
haolongsun
2022-09-20 11:38:07 +08:00
埃式筛、欧拉筛,了解一下这些数论初级算法知识。
还有这种问题百度不更快?
题目也是惊呆了,所有质数,你这一辈子能打印出来,就不叫菲尔兹奖了,就该以你的名字命名了。
FYFX
2022-09-20 14:14:59 +08:00
你这个标题太吓人了,也算是 X-Y Problem 了,而且素数是无限个,这个欧几里得开始就有证明了,所以你没法表示所有的素数。不过你问题的解法就是楼上几位给出的素数筛,哦打表法也行

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

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

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

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

© 2021 V2EX