夜空日和 [出張版]

星を見上げながら、今日を語ってみようか

 

スポンサーサイト


Category: スポンサー広告   Tags: ---
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

素数個数を求めよう


Category: 技術   Tags: ---
Coq や Haskell を見てると、関数型の処理って面白い動きをしていると感じる。

さて、Rubyも「関数型の書き方」が出来るらしいので、挑戦してみようと思う。
(※ ただし、遅延評価では無いので、そこは目をつむる方針で)

関数型といえば、リストで処理するという印象。
def prime (x,*xs)
  [x] + ((xs.empty?) ? [] : prime(*xs.select{|p| p%x!=0}))
end
puts prime(*(2..10**5).to_a).count
stack level too deep (´・ω・`) となってしまった

もう手続き型っぽいけど、総アタックで計算する。
puts (2..10**5).select{|p| (2..Math.sqrt(p)).find{|x| p%x==0}.nil?}.count

実は、Rubyには素数のPrimeクラスが用意されてた。
require 'prime' # ruby > 1.9
puts Prime.each(10**5).count
さすがに速い。

関数型っぽい書き方って難しい。
スポンサーサイト


Comments

Leave a Comment



10 2017
SUN MON TUE WED THU FRI SAT
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

09

11


 
プロフィール

ひでたそ

Author:ひでたそ
Comment:
現役大学生で天文好き。
今日もどこかで、上を見ながら歩いています。

 
 
 
最新トラックバック
 
 
検索フォーム
 
 
 
ブロとも申請フォーム
 
QRコード
QRコード
 

Archive   RSS   Login

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。