如何筛选出 10,000 以内的所有质数?
再来问一个,如何筛选出 10,000 以内的质数,任何方法都可以,当然是越简洁越好。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
再来问一个,如何筛选出 10,000 以内的质数,任何方法都可以,当然是越简洁越好。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(15)
厄拉多塞筛法:一个不在筛上的数字就是质数,而在筛上的数字是合数:给每个合数记录它的因子,用数字+因子放进筛子。
这个是优化过的无穷序列的质数序列的 clojure 语言程序。在我的电脑上,初次运行 10000次 10000以下质数寻找仅需要2.53毫秒。
工程上,预先打好表,需要的时候直接加载
列出2~10000的所有數字,先把2的倍數刪掉,再刪掉3的。。。刪掉5的,以此類推。。。
给你个one-liner:
我好无聊…………
http://blog.csdn.net/program_think/article/details/7032600
素数筛选法
流氓做法:
从下载到1000000内质数(http://www.doc88.com/p-905280735187.html),然后每个数一行,写道文本文件里。
用的时候,需要多少个数字,直接head到对应行数就行了(囧),速度绝对牛逼,堪称所有方法最快。
(head用法http://blog.sina.com.cn/s/blog_6b7bda7f0100luhp.html)
可以看这里 python执行效率疑问 找素数用筛法比试除法效率高很多。
filter(lambda x:not[x%i for i in range(2,x) if x%i==0],range(2,10000))
虽然比较慢但是挺短的不是吗233
复制一个 Haskell 的来, 取数字时候按下边取:
http://stackoverflow.com/questions/3596502/lazy-list-of-prime-numbers
@jiyinyiyong
请记得安装「bsd-games」软件包。
这个用筛法啊,一种ACM算法
先删掉偶数,在将2,3,5等质数的倍数筛掉,剩下的就是质数了
通常都是通过打表再来调用的