#はじめに
今回は素数のお話です
難しかったので、間違えないように順をおって書きたいと思います
Rails関係なくても書いている下記はすでに決まり文句ともなりました
なお、本記述はMacにおいて、Railsでの開発を前提としています
また、まだまだひよっこですので、不備等ございましたらご指摘いただけると幸いです
*例によって、コメントにてありがたいご指摘をいただいております
そちらの方が、コーディングも短くなっているので、是非ご覧ください!!
#目次
- 素数の話
- 素数を見つける
- 問題
##素数の話
意外と素数を知らない人が結構いるので、まずは素数とはなんぞやと言う話をしたいです
素数の定義は
1より大きい自然数で、正の約数が1と自分自身のみであるもののこと。つまり、正の約数の個数が2である自然数のこと。
さっぱりですかね、そうですね
小学生にもわかるように言いますと、
「2以上の小数点が付かない数(これをxとします)で、その数(x)を余りの無いように割り算しようとすると、その数(x)と1以外では割り算できない数のこと」
でしょうか
私にとってはすごくわかりにくい文章になりましたが、理解していただけるならこれでいいでしょう
素数は"2,3,5,7,11,13,17,19..."と続きます
##素数を見つける
さて、素数を求めるプログラミングを考えたいと思います
公式リファレンスを参照します
いやー難しい…何書いてるのかさっぱりです
こう言う時はひたすらコードを書きましょう
たどり着いたのはこのメソッド
"prime?"
これで素数かどうか判定できるようです
require 'prime' # これ必須です
p Prime.prime?(3)
# => true
p Prime.prime?(4)
# => false
# 返り値は"true","false"です
できました
3は素数なので"true"を返してくれています
4は素数では無いので、"false"が帰ってきます
いやー、便利なメソッドですね、本当に
考えなくても素数を返してくれるんですから
さて、ではこれを使って素数判定のプログラムを組んでみましょう
素数だけ教えてくれるプログラムです
require 'prime'
p "どの数字までの素数が知りたいんや?うちが教えたるで"
i = gets.to_i
if i >= 2
pri = []
(1..i).each do |p|
if Prime.prime?(p) == true
pri << p
end
end
p pri
else
p "その数はエラー起きてまうわ、ごめんな"
end
# => 20
# => [2, 3, 5, 7, 11, 13, 17, 19]
できました
いやぁ、しかしこの辺のメソッド使えば数学余裕じゃね?ってくらい使えそうなのが転がってますね
まだまだ勉強の余地がありそうです
次は素因数分解でも書きたいと思います