質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

5回答

4439閲覧

rubyの質問です、素数かどうかを調べるメソッドを作りたいです

renre1221

総合スコア11

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2015/08/14 13:39

def prime?(num)
if (num%2!=0)&(num%3!=0)
print num
else
print"its not prime!"
end
p prime?(17)
2か3で割り切れない場合(1とその数で割り切れるのは当たり前だから)で
素数をチェックしようと思ったのですが機能しません。
どこが間違っているのでしょうか?この文の問題を教えてください
宜しくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikuwow

2015/08/14 13:49

ソースコードをMarkdown記法の```で囲んで、インデントや空白等を整えていただけると助かります。あとエラーメッセージがあるならそれを乗せてくれるとわかりやすいです。
guest

回答5

0

Rubyのコードについてはわからないのですが、素数の定義がちがうのでは?
2から、入力した数(num)から1を引いた数(num-1)までで、入力した数(num)の約数がなければ素数だと思います。

見当はずれの回答だったらごめんなさい。

投稿2015/08/14 13:58

Yamachan0928

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ifのところは&ではなく&&だと思います。
ただ、なおしたとしても、2と3が素数だと判定されません。
また、187(=11 * 17)とかは素数でないのに素数だと判定されてします。
本格的に実装したいのなら、標準ライブラリprimeの
Prime.prime?がどうしているかを見てみるといいと思います。
prime.rbのソースの139行目からです。

投稿2015/08/14 13:55

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ruby には Primeクラス があります。
自作しなくても、素数を得ることができます。

自作するなら1つの例として

質問文のコードを改良するとしたら、こんなふうにする案があります。

ruby

1# coding: utf-8 2def prime?(num) 3 # num > 0 をチェックすべき... 4 return false if num == 1 5 (2..Math.sqrt(num)).each do |x| 6 if num % x == 0 7 return false 8 end 9 end 10 true 11end 12 13(1..100).each do |n| 14 puts n if prime?(n) 15end

実行結果:

ruby

12 23 35 47 511 613 717 819 923 1029 1131 1237 1341 1443 1547 1653 1759 1861 1967 2071 2173 2279 2383 2489 2597

投稿2015/08/14 14:31

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

みなさまありがとうございました、
標準ライブラリを確認してみます。

投稿2015/08/14 14:02

renre1221

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

if (num%2!=0)&(num%3!=0)
ではなく
if (num%2!=0)&&(num%3!=0)
としたかったのでは?

投稿2015/08/14 13:58

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問