広告スペース(バナー)
💎Ruby レッスン
基本文法の基礎8
データ構造とオブジェクト指向7
構文の基本を深める9
関数とデータ構造の応用9
アルゴリズムとテストの基礎8
文字列・数値操作の応用8
実務で役立つ機能8
アルゴリズム練習問題10
レッスン 60 / 68

素数かどうかを判定しよう

このレッスンでは、ある数が素数かどうかを判定するアルゴリズムを学び、効率的な判定方法を理解することを目標にします。「Ruby 素数判定」で検索している方向けの内容です。

ある数が素数(1とその数自身でしか割り切れない数)かどうかは、2から「その数の平方根」までの数で割り切れるかを調べればわかります。すべて割り切れなければ素数です。

サンプルコードでは、(2..Math.sqrt(n)).eachという範囲を使うことで、実質的に「平方根まで」の範囲だけをループしています。Math.sqrt(n)で平方根を計算し、その範囲でループする書き方がポイントです。

初心者がよくつまずくのが、なぜ平方根までしか調べなくてよいのかという理屈です。ある数を割り切る2つの数のペアは、必ず一方が平方根以下、もう一方が平方根以上になるため、平方根以下の範囲だけ調べれば十分だという性質を利用しています。

暗号技術の基礎にも使われる重要な数学的性質で、効率よく判定するアルゴリズムを考える良い練習になります。エラトステネスの篩(ふるい)という、複数の素数を一度に効率よく求める発展的な手法も存在します。

📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください

🧪 このサイトではRubyを直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。

🎯
ここまでできればゴール達成!
入力された数が素数かどうかを判定するツールが作れるようになります。
広告スペース(バナー)
広告スペース(記事内)