求质数算法的ruby实现

原文: http://blog.csdn.net/aegoose/article/details/7075997

看到 http://blog.csdn.net/program_think/article/details/7032600 讲了一些求质数的简单算法逻辑, 最近也用ruby玩一些编码实现,想到用ruby实现质数的也是挺有趣. 

本文尝试用ruby实现一些简单的求质数算法的简单逻辑, 没有考虑过太多的性能是否能得到真优化问题, 以后有时间再慢慢优化优化. 本人只是通过ruby尝试一下算法的简单逻辑.

1. 算法背景

    给定一个整数N, 求N以内的所有质数.

    比如: 当 n = 10, 能得到 2 3 5 7的质数.

2. 试除法

    即通过简单的除法计算来算出所有质数.

2.1 遍历除因子求质数

    遍历每个整数x, x<n, 通过x除以 [ 2..x-1 ]的所有数xi, 如果x不能整数所的xi, 则x为质数.

# divide all fronts
#
# Check 2 to "x-1" is the divisor or not for a number "x"
#
def by_divide_fronts(n)
  (2..n).inject([]) do |primes, x|
    the_one = false
    (2..x-1).each do |xi|
      if (x % xi == 0)
        the_one = xi
        break
      end
    end
    primes << x unless the_one
    primes
  end
end

2.2 折半遍历因子求质数

   遍历每个整数x, x<n, 通过x除以 [ 2..x/2 ]的所有数xi, 如果x不能整数所的xi, 则x为质数.


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值