素数とは?
素数とは、1より大きい整数のうち、正の約数が「1」と「その数自身」の2つだけであるものを指します。一方、約数が3つ以上ある数は合成数と呼ばれます。なお「1」は特別で、約数が1つ(自分自身)しかないため、素数でも合成数でもありません。このツールでは、入力した数が素数か合成数かを判定し、約数の一覧、さらに直前の素数と直後の素数を表示します。
$$n = \text{Number} \text{ is prime} \iff n > 1 \;\wedge\; \nexists\, d \in [\,2,\ \lfloor\sqrt{n}\rfloor\,] : n \bmod d = 0$$
使い方
1より大きい整数を入力欄に入れて送信するだけです。ツールはその数を素数か合成数かに分類し、入力値を再表示したうえで、合成数の場合はすべての約数を一覧表示します。あわせて、その数より小さい最大の素数と、より大きい最小の素数も示します。
計算のしくみ
このツールでは「6k±1の最適化」を用いた確定的な試し割り法(trial division)を採用しています。まず2と3を素数として扱い、偶数や3の倍数を除外します。次に、6k−1・6k+1の形をした候補(5, 7, 11, 13, …)だけを、n の平方根まで割り算して調べます。どれでも割り切れなければ n は素数です。平方根までで十分な理由は、平方根より大きい約数は必ず平方根より小さい約数とペアになるためです。
具体例で確認
\(n = 97\) で考えてみましょう。平方根は約9.85です。97は奇数で、3の倍数でもありません。そこで5(\(97 \div 5\)の余りは2)と7(\(97 \div 7\)の余りは6)を試します。次の候補は11ですが、$$11 \times 11 = 121 > 97$$なので、ここで打ち切ります。割り切れる数は見つからなかったので、97は素数です。直前の素数は89、直後の素数は101になります。
よくある質問
1は素数ですか? いいえ。1は約数が1つしかないため、素数でも合成数でもありません。
2は素数ですか? はい。2は最小の素数であり、唯一の偶数の素数です。これより小さい素数は存在しません。
なぜ約数の一覧は合成数のときだけ表示されるのですか? 素数は定義上「1とその数自身」しか約数を持たないため、その旨を示すだけで十分です。合成数は多くの約数を持つことがあるので、小さい順に一覧表示します。