`
laies
  • 浏览: 240302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

求50以内的素数,算法分析。

    博客分类:
  • Ruby
阅读更多

求50以内的素数,以下算法做了很大程度的优化。拿出来与大家分析,望有更好的优化算法。

$arr=[ ]      #建立一个全局数组  $arr
$arr[0]=2   #第一个位置值存入2

 def add_prime(n)    #定义方法  将 n以内的奇素数加入$arr

    3.step(n,2){|num|$arr <<num  if is_prime?num }   
       #从3开始,取50以内的奇数,并判断将素数存入arr数组中
      
 end
 
 def  is_prime?(number)   #定义方法  判断一个数是否是素数
    j=0                                #数组下标
         
      #算法分析:首先判断该数是否大于小于本身素数的平方,
      #大于则判断是否整除该素数,等于则证明该数是非素数。
      #前俩者不成立,则该数小于素数平方证明该数为素数。
   
    while  $arr[j] * $arr[j] <=number
      return false  if  number  %  $arr[j] ==0
      j +=1
    end
    return true
 end

add_prime(50)
print  $arr.join(", "),"\n"          #转换成字符串输出

分享到:
评论
7 楼 njmzhang 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 }
6 楼 xangd 2007-07-16  
50以内?
搞个对照表查一下最快乐 哈哈
5 楼 roger 2007-07-16  
判断素数最快还是费马小定理
4 楼 graying 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}
3 楼 dennis_zane 2007-07-14  
费马小定理来检测,对数级的增长阶
2 楼 skyin 2007-07-13  
还没有更高效率的?
1 楼 yuhai.china 2007-07-13  
求素数的标准算法是“筛法”,呵呵

相关推荐

    中科大算法分析与设计概率算法部分的源码

    概率算法求8皇后问题与概率算法输出1000万以内的质数等带有分析文档

    输出1000以内的素数的算法(实例代码)

    本篇文章是对输出1000以内的素数的算法进行了详细的分析介绍,需要的朋友参考下

    数据结构与算法课程设计报告

    定时/计数技术应用程序设计、图形变换程序设计、代码转换程序设计、指法练习程序、个性计算器、星期判断程序、求 100 以内的素数、简易动画制作、打字游戏、幸运抽号。并且要求学生在完成设计任务后,按要求撰写课程...

    ACM算法模板和pku代码

    词法分析与算法优先算法,集合运算:差集,并集,交集 矩阵乘法 线段覆盖数量 矩阵构造,nlogn矩阵乘法 2-SAT XOR AND OR 变量逻辑表达式可满足性 钥匙开门,二分+2-SAT判定 枚举 两维枚举,一维用二分 实数二...

    上海电机学院C语言实训答案

     程序的总体设计和算法分析。  程序流程图、函数说明  源程序代码清单  测试数据和测试过程记录  遇到的问题及解决方法分析  实训小结 4. 程序运行方式 构建一个简易菜单,形如: 用户通过输入数值...

    acm模板(全)

    2.13 2^14以内的素数 27 3 数据结构 31 3.1 堆(最小堆) 31 3.1.1 删除最小值元素: 31 3.1.2 插入元素和向上调整: 32 3.1.3 堆的建立 32 3.2 并查集 32 3.3 树状数组 33 3.3.1 LOWBIT 33 3.3.2 修改a[p] 33 3.3.3...

    delphi 开发经验技巧宝典源码

    0070 求1000以内的完数 45 0071 如何计算x的y次方 46 3.2 复杂计算类算法 46 0072 如何实现金额大小写转换的算法 46 0073 如何计算时钟的指针位置 47 0074 如何计算汉字笔划 48 0075 如何计算两个日期...

    ACM模板(几乎全)

    2.13 2^14以内的素数 27 3 数据结构 31 3.1 堆(最小堆) 31 3.1.1 删除最小值元素: 31 3.1.2 插入元素和向上调整: 32 3.1.3 堆的建立 32 3.2 并查集 32 3.3 树状数组 33 3.3.1 LOWBIT 33 3.3.2 修改a[p] 33 3.3.3...

    c程序设计习题参考(谭浩强三版)习题参考解答

    7.1用筛法求100之内的素数。 28 7.2用选择法对10个整数排序(从小到大)。 30 7.3求一个3×3矩阵对角线元素之和。 31 7.4有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。 32 7.5将一个...

    c语言编写单片机技巧

    Transform)、频谱分析、图像处理的分析等领域,DSP正在大量进入嵌入式市场。 18. MCU在射频控制时,MCU的时钟(晶振)、数据线会辐射基频或基频的倍频,被低噪放LNA放大后进入混频,出现带内的Spur,无法滤除...

    delphi 开发经验技巧宝典源码06

    0070 求1000以内的完数 45 0071 如何计算x的y次方 46 3.2 复杂计算类算法 46 0072 如何实现金额大小写转换的算法 46 0073 如何计算时钟的指针位置 47 0074 如何计算汉字笔划 48 0075 如何计算两个日期...

Global site tag (gtag.js) - Google Analytics