浏览 8925 次
锁定老帖子 主题:求50以内的素数,算法分析。
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-10
求50以内的素数,以下算法做了很大程度的优化。拿出来与大家分析,望有更好的优化算法。 $arr=[ ] #建立一个全局数组 $arr def add_prime(n) #定义方法 将 n以内的奇素数加入$arr 3.step(n,2){|num|$arr <<num if is_prime?num } add_prime(50) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-13
求素数的标准算法是“筛法”,呵呵
|
|
返回顶楼 | |
发表时间:2007-07-13
还没有更高效率的?
|
|
返回顶楼 | |
发表时间:2007-07-14
费马小定理来检测,对数级的增长阶
|
|
返回顶楼 | |
发表时间:2007-07-14
说优化谈不上,但是ruby写的确方便很多。
哪里看到过的例子,回忆了写的: (2..50).each{|n| s=true; (2..n-1).each{|f| (s=false; break;) if n%f==0 }; puts n if s} |
|
返回顶楼 | |
发表时间:2007-07-16
判断素数最快还是费马小定理
|
|
返回顶楼 | |
发表时间:2007-07-16
50以内?
搞个对照表查一下最快乐 哈哈 |
|
返回顶楼 | |
发表时间:2007-07-17
graying 写道 说优化谈不上,但是ruby写的确方便很多。
哪里看到过的例子,回忆了写的: (2..50).each{|n| s=true; (2..n-1).each{|f| (s=false; break;) if n%f==0 }; puts n if s} (2..50).inject([]) { |s, e| (s.map { |x| e % x }).include?(0) ? s : s << e } |
|
返回顶楼 | |