素数の判定と素因数分解
生成処理はすべてブラウザ内で完結します。データは送信されません
5 つの機能を 1 つにまとめているのは、土台が同じだからです —— ある数が素数かどうかの判定です。「1000 番目の素数は何か」「100 から 200 の間に素数はあるか」「素数を 10 個適当に」は、すべてその土台に別の見た目を被せたものです。5 ページに分けると、その判定を 5 回書くことになり、しかもそこは最も間違えてはいけない部分です。 判定にはミラー-ラビン法を使い、平方根までの試し割りはしません。 試し割りは 10 桁ならともかく、18 桁では 10 億回の除算になり、ページが固まります。ミラー-ラビン法は確率的アルゴリズムですが、基底を固定すればある範囲では決定的に正しい:最初の 12 個の素数を基底にすると、3.3×10²⁴ 未満の合成数は 1 つも素数のふりができません(この限界は証明済みです)。それを超える場合は「確率的判定」であることを明示します。 分解には Pollard rho を使いますが、パラメータは決定的です:多項式の定数を 1 から順に試すため、乱数源はなく、同じ入力は常に同じ経路をたどります。 分解できない桁数は素直に断ります。 数分間回してページが死んだように見せるより、そのほうがましです。
機能
- 5 通りの用途:判定・分解・N 番目の素数・範囲の列挙・ランダム生成
- ミラー-ラビン法による判定:18 桁でもミリ秒単位。平方根までの試し割りは不要
- 3.3×10²⁴ 未満の判定は決定的。超える場合は確率的判定であることを表示
- 素因数分解は Pollard rho を使用。大きな素数の積も分解できます
- 素数でない場合は最小の素因数を示すので、確認できます
- 分解は各素因数と指数を並べ(`2^3 × 3^2 × 5`)、個別にコピーできます
- カーマイケル数(フェルマーの小定理を騙す合成数)も見破ります
- 範囲の列挙は最大 500 個まで。超えた分は件数を明示します
- すべて端末内で計算し、外部サービスに依存しません
使い方
- 用途を選びます:判定・分解・N 番目・範囲・ランダム生成
- 対応する数値を入力します(範囲とランダムでは範囲が必要です)
- 結果は即座に表示されます。行のコピーボタンで取り出せます
よくある質問
- 「確率的判定」とは何ですか?間違うことはありますか?
- ミラー-ラビン法は確率的アルゴリズムですが、基底を固定するとある範囲に反例が存在しません —— 最初の 12 個の素数(2 から 37)を基底にすると、3.3×10²⁴ 未満の合成数は素数を装えないことが証明されています。したがってその範囲では結果は決定的です。それを超えても信頼性は極めて高く(誤り率は 4⁻¹² 未満)、単に数学的な証明ではなくなるため、ツールがその旨を表示します。
- 何桁まで分解できますか?
- 上限は 18 桁です。分解は小さい素数での試し割り、Pollard rho、ミラー-ラビン法の組み合わせで、18 桁(約 60 ビット)の 2 つの素数の積は通常 1 秒以内に解けます。それを超える場合は素直に断り、理由を説明します —— 数分間回り続けるページは、「大きすぎます」の一言よりはるかに悪いからです。
- 最初の素数が 1 ではなく 2 なのはなぜですか?
- 1 は定義上素数ではないからです(素数は正の約数をちょうど 2 つ持ちますが、1 は 1 つしかありません)。したがって最初の素数は 2 で、2, 3, 5, 7, 11… と続きます。このツールは 0 と 1 についても「素数ではない」と明示し、「最小の素因数は 1」などとは書きません —— 1 は素数ではないので、それは誤った表示です。
関連ツール
フィボナッチ数列
生成フィボナッチ数列の先頭 N 項、任意の 1 項、範囲を生成します。ある数が何番目かの逆引きも可能。BigInt なので 1000 項でも正確です。
乱数ジェネレーター
生成範囲・個数・小数桁を指定して乱数を生成します。重複の排除、並べ替え、2・8・16 進数での出力にも対応。乱数源は暗号学的乱数です。
基数変換
変換2・8・10・16・36・64 進数を相互変換。6 通りの結果を一度に表示し、19 桁のスノーフレーク ID も正確に扱えます。すべてブラウザ内で処理します。
UUID 生成
生成UUID v4・v7・v8・ULID・NanoID・CUID・ショート ID・MongoDB ObjectId を一括生成。乱数はブラウザの暗号 API から取得し、通信も記録もしません。
ダミーテキスト
生成ダミーテキストを生成します。Lorem ipsum・英語の文・中国語・日本語のダミー文から選べます。段落・文・単語単位で出力。すべてブラウザ内で生成します。
モックデータ
生成「フィールド名:型」を数行書くだけで、形式が本物そっくりのモックデータをまとめて生成。JSON・CSV・TSV・SQL・XML・YAML・TOML で出力できます。