Ruby
エラトステネスの篩

エラトステネスの篩をrubyで書いてみた

More than 1 year has passed since last update.

参考:wikipedia エラトステネスの篩

ソースコードはこちら https://github.com/tomiokario/algorithms

友達がcで頑張って作っていたので、rubyなら簡単にかけるのではないかと思い書いてみた。


primenumber_Eratosthenes.rb

puts "上限を設定"

puts "数値を入力"
num = gets.to_i # 数値を獲得

allNum=[] # 2~Nの全数字
primeNum=[] # 素数リスト

count=2 # 初期値
loop do
allNum << count
count += 1
break if count>num
end

loop do
min = allNum.min # 最小値の取得
# 最小値の倍数をallNumから削除
i=1
loop do
x = min*i
allNum.delete(x) # allNumからxを削除
i += 1
break if x>num
end
primeNum << min # primeNumにallNumの最小値を代入
break if allNum.empty? # allNumが空になったら終了
end
print primeNum;puts # primeNumを表示,改行


感想

rubyでは配列の操作が簡単にできて楽に感じた。

エラトステネスの篩は配列や繰り返しなどが出てくるので、プログラミング言語の入門から基礎に移るくらいの時期にはいい題材だと思った。