メルセンヌ数判定
指数を入れると、2^p − 1の値と素数かどうかの判定が分かります。7なら127でメルセンヌ素数、11なら2047で23 × 89に分解できます。指数は2から10,000まで使えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 電力(W)
- 7
- メルセンヌ数
- 127
- 十進桁数
- 3
Mp 自身が素数のときメルセンヌ素数と呼ばれ、マラン・メルセンヌの初期リストから現代の分散プロジェクトまで、何世紀にもわたり記録更新の探索を牽引してきました。すべての指数が素数を生むわけではありません。p が合成数なら Mp も合成数であり、多くの素指数でもメルセンヌ数は因数分解されます(例:2^11 − 1 = 2047 = 23 × 89)。本ツールは 2 以上の整数指数 p を受け取り、2^p − 1 の完全な十進値を文字列で返し、p が奇素数のとき決定的 Lucas-Lehmer テストで素数かどうかを判定します。
メルセンヌ数とは何か、Lucas-Lehmer の判定
メルセンヌ数は単一の指数で定義されます。Mp は 2 の p 乗から 1 を引いたものです。最初の値は教室でおなじみの定数 — M2 は 3、M3 は 7、M5 は 31、M7 は 127 — で、より大きな指数は数千桁の十進整数を生みます。
メルセンヌ素数は素数であるメルセンヌ数です。古典的な必要条件は指数 p 自身が素数であることです。p が a と b が 1 より大きい ab に分解されるなら 2^a − 1 が 2^{ab} − 1 を割るため Mp は素数になれません。
この必要条件は十分条件ではありません。素数である p が 11 のとき M11 は 2047 で 23 × 89 に分解します。Lucas-Lehmer テストは奇素指数について完全に決着をつけます。
s の 0 番目を 4 とし、続く p−2 回の各ステップで s を s の平方から 2 を引いたものを Mp で剰余した値に置き換えます。最終剰余が 0 のときだけメルセンヌ数は素数です。本機能は BigInt 算術でこの正確なパイプラインを実装し、近似せず、素数判定サービスを呼ばず、壁時計や乱数ビットに依存しません。
同じ p には常に同じブール値を返します。
実務でメルセンヌ判定が現れる場面
コンテスト選手とオリンピック指導者は、より難しい合同算術問題の前のウォームアップとして小さなメルセンヌ判定を使い、生徒が表計算の式から偶然ずれない決定的オラクルを必要とします。暗号・システム技術者は、単一の合同列から暗号強度を主張せずに、既知メルセンヌ素数の教育デモや歴史表を確認することがあります。
双子素数、π(n)、一般合成数の因数分解が後で必要なら、メルセンヌ中心の本ページを過負荷にせず別の検索意図として扱ってください。問いが 2^p − 1 の値と Lucas-Lehmer(または合成指数規則)がメルセンヌ素数と認定するかどうかであるとき、メルセンヌ数が正しいページです。
活用例
パイプライン向けメルセンヌ判定
スクリプトと CI から同じ同型契約を呼び、メルセンヌ素数性のアサーションが気軽な Web フォームや言語モデルに依存しないようにします。
よくある質問
p が 2 未満だとエラーになりますか?
判定器は 2 から 10,000 までの指数のみを受理します。
ここでの Lucas-Lehmer の仕組みは?
最終剰余が 0 のときだけ Mp は素数です。合成指数はループを飛ばし合成と報告されます。
結果は決定的ですか?
乱数・ネットワーク呼び出し・モデルはなく、BigInt 合同算術と指数の試行除算のみです。
メルセンヌ数とは何ですか?
2のp乗から1を引いた数です。指数が2、3、5、7なら値は3、7、31、127になります。その値自体が素数のとき、メルセンヌ素数と呼ばれます。
指数が素数ならメルセンヌ数も必ず素数ですか?
いいえ。指数が素数であることは必要ですが十分ではありません。11では2047となり、23 × 89に分解できます。指数が4のような合成数なら、メルセンヌ数も15のように合成数です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/mersenne-number \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"p":7}'const res = await fetch("https://api.kit.forhosting.com/numth/mersenne-number", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"p": 7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/mersenne-number",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"p": 7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/mersenne-number", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"p":7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"p":7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/mersenne-number", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"p": 7
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.mersenne_number",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
min_p | 2 |
max_p | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
メルセンヌ数は Mp = 2^p − 1 という特別な形の整数で、p は正の整数指数です。
メルセンヌ数とは何か、Lucas-Lehmer の判定
特別な p=2 では 3 は検査により素数で反復列は不要です。
入力契約・成功応答・失敗モード
小数・空欄・非数値文字列は検証に失敗し課金されません。必須の整数フィールド p を送ってください(別名 exponent と power を受理)。値は 2 以上 — 2 未満は invalid_input で拒否しフォームが明確な境界エラーを出せるようにし — かつ 10000 以下で、合同平方が Worker とブラウザの予算内に収まるようにします。成功時 JSON は p、2 の p 乗マイナス 1 の完全十進文字列 mersenne、その桁数 decimal_digits、指数の p_is_prime、Mp の is_mersenne_prime、実行経路を示す method(古典的 3 の special_case_p2、合成指数の composite_exponent — そのとき Mp は Lucas-Lehmer を回さずに合成と分かる —、または奇素数 p の lucas_lehmer)を報告します。教科書なしで信頼できるスポットチェック:p=7 は mersenne 127 と is_mersenne_prime true;p=11 は 2047 と false;p=4 は mersenne 15 で composite_exponent と false;p=1 は検証失敗。ブラウザツールと API は同一の同型 solve 関数を呼ぶため、対話的探索と自動テストはビット単位で一致します。API 料金は成功品目ごとに公開ベース $0.002 で、失敗検証は残高を消費しません。
実務でメルセンヌ判定が現れる場面
教員は短い指数リストについて 2^p − 1 を計算しどれが素数かを印す課題を出し、本エンドポイントは十進展開と素数フラグを一つの JSON で返すため一つのフィクスチャで両方の問いに対応できます。能力は純粋 parse エンジンのため、同じ p は常に同じ JSON を生み、ネットワーク依存も保存状態もありません。課題と探索には無料ブラウザ実行器を使い、前払い残高での大量判定が必要なときはスクリプトと CI から API を呼び出してください。
連携の活用例
課題とオリンピックのウォームアップ
授業用の指数について Mp = 2^p − 1 を計算し、決定的 Lucas-Lehmer の答え合わせでどの値がメルセンヌ素数かを検証します。
数論デモ用の決定的フィクスチャ
大きな十進文字列を手で保守せず、スライド・単体テスト・文書向けに安定した mersenne と is_mersenne_prime フィールドを生成します。
技術的な質問
メルセンヌ数とは何ですか?
メルセンヌ数は整数指数 p に対する Mp = 2^p − 1 の形の整数です。その数が素数のときメルセンヌ素数と呼ばれます。
費用はいくらですか?
ブラウザツールは無料でローカル実行です。API リクエストは成功品目ごとに $0.002 の前払い KIT 残高を使用し、無効入力は課金されません。