0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

初学者によるプログラミングMemo #20 素数判定

Last updated at Posted at 2020-01-28

#はじめに
今回は素数のお話です
難しかったので、間違えないように順をおって書きたいと思います
Rails関係なくても書いている下記はすでに決まり文句ともなりました
なお、本記述はMacにおいて、Railsでの開発を前提としています
また、まだまだひよっこですので、不備等ございましたらご指摘いただけると幸いです
*例によって、コメントにてありがたいご指摘をいただいております
そちらの方が、コーディングも短くなっているので、是非ご覧ください!!

#目次

  • 素数の話
  • 素数を見つける
  • 問題

##素数の話
意外と素数を知らない人が結構いるので、まずは素数とはなんぞやと言う話をしたいです
素数の定義は

1より大きい自然数で、正の約数が1と自分自身のみであるもののこと。つまり、正の約数の個数が2である自然数のこと。

さっぱりですかね、そうですね
小学生にもわかるように言いますと、

「2以上の小数点が付かない数(これをxとします)で、その数(x)を余りの無いように割り算しようとすると、その数(x)と1以外では割り算できない数のこと」

でしょうか
私にとってはすごくわかりにくい文章になりましたが、理解していただけるならこれでいいでしょう
素数は"2,3,5,7,11,13,17,19..."と続きます

##素数を見つける

さて、素数を求めるプログラミングを考えたいと思います
公式リファレンスを参照します
いやー難しい…何書いてるのかさっぱりです
こう言う時はひたすらコードを書きましょう

たどり着いたのはこのメソッド

"prime?"

これで素数かどうか判定できるようです

.rb
require 'prime' # これ必須です

p Prime.prime?(3)
# => true

p Prime.prime?(4)
# => false
# 返り値は"true","false"です

できました
3は素数なので"true"を返してくれています
4は素数では無いので、"false"が帰ってきます

いやー、便利なメソッドですね、本当に
考えなくても素数を返してくれるんですから

さて、ではこれを使って素数判定のプログラムを組んでみましょう
素数だけ教えてくれるプログラムです

.rb
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]

できました
いやぁ、しかしこの辺のメソッド使えば数学余裕じゃね?ってくらい使えそうなのが転がってますね
まだまだ勉強の余地がありそうです
次は素因数分解でも書きたいと思います

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?