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

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

ただいまの
回答率

90.49%

  • Ruby

    7893questions

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

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

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 1,827

renre1221

score 1

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ikuwow

    2015/08/14 22:49

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

    キャンセル

回答 5

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ruby には Primeクラス があります。
自作しなくても、素数を得ることができます。
- class Prime http://docs.ruby-lang.org/ja/2.2.0/class/Prime.html

自作するなら1つの例として
- Ruby の prime モジュールと自作のエラトステネスのふるいを benchmark で比較する http://qiita.com/norioc/items/dbb8d834462afc685aa9

質問文のコードを改良するとしたら、こんなふうにする案があります。
# coding: utf-8
def prime?(num)
  # num > 0 をチェックすべき...
  return false if num == 1
  (2..Math.sqrt(num)).each do |x|
    if num % x == 0
      return false
    end
  end
  true
end

(1..100).each do |n|
  puts n if prime?(n)
end

実行結果:
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

-1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    PHPでMySQLのテーブルからcount(*)を選択する方法

    PHPからMySQLに発行するSQL文で、普通のSELECT文であれば結果の値を取得できるのですが、 SELECT COUNT(*) ~のときはどのようにして値を取得すればよいので

  • 解決済

    素数ライブラリは?

    Rubyの require 'prime'のような素数ライブラリはPythonにあるのでしょうか? たとえなかったとしても、普段どのように素数のリストを 用意しているか教えていた

  • 受付中

    FizzBuzz問題について

    FizzBuzz問題を解いています。 3の倍数の時にFizz 5の倍数の時にBuzz 15の倍数の時にFizzBuzzと出力するものです。 今回は、数字をカンマ区切りで表示したいの

  • 解決済

    コードの問題点 c

    このコードに疑問があります。 prime[500]と500個の配列をつくって、 prime[ptr++]=2としたら prime[1]=2となってしまいませんか? それとも[ptr

  • 解決済

    「小さい順にN 個の素数」を求めるには?

    「小さい順にN 個の素数」を求めるのにどうしていますか? http://qiita.com/norioc/items/5c270ad6ff5d22d1efd0 http:/

  • 解決済

    書いたコードのどこが間違っているのか分かりません

    num = gets.chomp.split("").map(&:to_i) while 1 flag = true (0..num.size-2).each do |i

  • 解決済

    整数かどうかを真偽値で判定

     目的、行いたい事 N(i) = 2017/i と言う数式があったとき N(i) が整数のとき、その数を出力したいです。  試した事 すっごい雑ですが以下のような手順で出力で

  • 解決済

    Go言語 素因数分解

    Go言語で素因数分解素因数分解を書こうとしてるのですがどのように書いていいのかさっぱりわかりません。コードと何をしているのか教えていただける人がいれば教えてください

同じタグがついた質問を見る

  • Ruby

    7893questions

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