素因数連結で求めるホームプライム計算機
12は 2 × 2 × 3 と分解でき、数字をつなげると223になります。223は素数なので、12のホームプライムは223です。2から1兆までの開始値を入力すると、すべての途中経過が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- N
- 12
- ホームプライム
- 223
- 反復回数
- 1
- 配列
- 12, 223
ホームプライムとは、合成数を素因数分解し、素因数を昇順に区切りなしで並べ、その結果が素数になるまで同じ操作を繰り返して得られる数です。この計算機はその手順を正確に実行し、途中の整数をすべて表示するとともに、必要だった変換回数を返します。また、反復回数と演算範囲に明確な上限を設けているため、難しい数列や非常に長い数列でも、計算資源を無制限に消費せず、分かりやすいエラーとして終了します。
素因数の連結から数列を作る方法
まず、1 より大きい整数を指定します。すでに素数なら、その数自体がホームプライムであり、反復回数は 0 です。合成数の場合は完全に素因数分解し、同じ因数も省略せず、小さい順に並べます。
次に、乗算記号や空白を取り除き、隣り合う十進数字を一つの新しい整数として読みます。たとえば 12 は 2、2、3 に分解されるため、次の値は 223 です。223 は素数なので、この数列は 1 回の変換で終了します。
標準的な手順では素因数を非減少順に並べるため、分解の見つけ方に左右されない再現可能な結果になります。文字列を使うことで、ブラウザーが数値として正確に扱える範囲を中間値が超えても、すべての桁が保たれます。乱数、外部照会、保存済みの表は使用しません。
上限とエラー結果の意味
ホームプライムの経路は急速に大きくなることがあり、開始値よりはるかに因数分解しにくい合成数が途中で現れる場合があります。そのため、有限の実行範囲そのものがこの計算機の仕様です。開始整数は 2 以上 1 兆以下でなければならず、生成される各値は対応する符号なし 64 ビット範囲内に収まる必要があります。
反復上限は 1 回から 20 回まで選択でき、既定値は 20 回です。その回数以内に素数へ到達しない場合、安全な反復上限を超えたことを示す入力エラーを返します。因数分解の処理量または中間値が保護上限を超えた場合には、別の明確なエラーを返します。
これらはホームプライムが存在しないという意味ではありません。公開された計算範囲内で経路を完了できなかったことだけを示します。小さな反復上限を指定した場合は 20 回まで増やせますが、予測可能な実行を守る演算上限は解除できません。
返された結果の読み方と検証方法
最終値だけを根拠のない答えとして見るのではなく、数列全体を監査記録としてご利用ください。隣り合う各要素は一つの完全な操作を表します。前の合成数を素因数分解し、因数を並べ、十進表記を区切りなしで連結すると、次の値になります。
反復回数はこの遷移の数なので、常に数列の要素数より 1 少なくなります。最後の要素はホームプライムと一致し、対応する 64 ビット領域に適した決定的素数判定を通過しています。他のプログラムと比較する際は、重複因子を保持し、文字列順ではなく数値順に並べ、区切りを入れずに連結しているかご確認ください。
成功は上限内での完了を示し、型付きエラーは資源制限を安定して通知します。
活用例
趣味の整数論を探究する
合成数が連結操作によって変化し、最終的な素数へ至る過程を追跡できます。
検証可能な教材を作る
完全な数列を使い、素因数分解、重複、整列、連結、素数判定を説明できます。
別の実装を試験する
各中間文字列と反復回数を決定的な参照結果と比較できます。
よくある質問
素数を入力してもよいですか?
はい。 入力した素数自体をホームプライムとして返し、反復回数は 0、数列は 1 要素になります。
上限エラーはホームプライムが存在しないという意味ですか?
いいえ。 選択した反復上限または対応する計算範囲内で数列が終了しなかったことだけを示します。
同じ素因数が複数ある場合はどう扱いますか?
すべての出現を残します。たとえば 12 では 2、2、3 を使い、223 を生成します。
12のホームプライムは何ですか?
223です。12は2、2、3に分解でき、小さい順につなげると223になります。223はすでに素数なので、1回の操作で終わります。
素因数を並べる順序はなぜ重要ですか?
同じ素因数でも並べ方が違えば別の数になるためです。標準の手順では常に小さい順に並べるので、同じ数から始めれば誰でも同じ結果になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/home-prime \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":12}'const res = await fetch("https://api.kit.forhosting.com/numth/home-prime", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/home-prime",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/home-prime", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/home-prime", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 12
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.home_prime",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_iterations | 20 |
max_n | 1000000000000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
素因数の連結から数列を作る方法
応答には、最終的な素数を十進文字列で示すフィールド、変換回数、入力値から始まる完全な数列が含まれます。
返された結果の読み方と検証方法
API の自動処理では、ホームプライムと各要素を文字列として扱うと精度低下を防げます。
技術的な質問
計算機の料金はいくらですか。
API リクエスト 1 回の料金は $0.002 です。ブラウザー版では同じ決定的ロジックを端末内で実行できます。
出力値が文字列なのはなぜですか。
中間整数が JavaScript の正確な数値範囲を超える場合があるため、十進文字列で JSON 内の全桁を保持します。