Ruby 10 行令你朋友惊讶的 ruby 代码

chenge · 2013年01月10日 · 最后由 chenge 回复于 2016年07月04日 · 4979 次阅读

埃拉托斯特尼筛法

埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种公元前 250 年由古希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。

#参考wikipedia,求120以内的素数
n=120
primes = Array.new
for i in 0..n-2
 primes[i] = i+2
end   
index = 0 
while primes[index]**2 <= primes.last
      prime = primes[index]
      primes = primes.select { |x| x == prime || x % prime != 0 }
      index += 1
end
p primes   

有空我写个 mathematica 版的

了解 API 可以少写很多代码

3 词汇表可以用 Regexp.union

words = ["scala", "akka", "play framework", "sbt", "typesafe"]
tweet = "This is an example tweet talking about scala and sbt."

p !(tweet !~ Regexp.union(words))

10 素数判定不用自己实现啦

require 'mathn'
p Prime.take_while{|n| n<120}

11 解多元线性方程组

require 'matrix'
m = Matrix[[2, 3], [1, 4]]
p m.lup_decomposition.solve([2, 3]).to_a
#=> [(-1/5), (4/5)]

12 分解质因数 (其实实现比较简单,大数还是 mathematica 内建的算法比较快)

require 'mathn'
p 123232913892382.prime_division
#=> [[2, 1], [7, 1], [17, 1], [4519, 1], [114579631, 1]]
chenge Ruby 学习汇集,请推荐内容 提及了此话题。 07月04日 11:35
需要 登录 后方可回复, 如果你还没有账号请 注册新账号