各桁の階乗和チェーンの長さ計算
各桁の階乗和チェーンは、0以上の整数から始め、その10進数の各桁の階乗を足した値へ置き換える操作を、同じ値が2回目に現れるまで繰り返す数列です。この計算機は、最初の反復が起こる前に現れた異なる値の個数を返します。各階乗を手作業で計算したり、長くなる数列を照合して循環を探したりせずに、数論で知られるこの過程を迅速かつ正確に調べられます。
無料で実行
各桁の階乗和チェーンを作る方法
調べたい0以上の整数から始めます。その数を10進数の各桁に分け、各桁の階乗を求めて合計します。得られた結果を次の値とし、同じ規則をもう一度適用します。たとえば69から始める場合は6! + 9!となり、結果は363600です。次に363600の各桁を処理して次の値を求め、同じ方法でチェーンを続けます。計算機は、途中で現れたすべての値を記録します。次に得られた値がすでに一度現れていれば、過程は循環に入ったため、その時点で計算を終了します。返される長さは、開始値を含む異なる値だけを数え、2回目に現れた値は重ねて数えません。この数え方により、異なる開始値を明確な基準で比較できます。0も独立した10進数の桁として扱うため、0!は1です。計算のどの段階でも丸めや近似は行いません。
返される長さの読み方
結果として返すのは途中の数列全体ではなく、1つの長さです。これは、反復が始まるまでに異なる項がいくつ現れるか、という中心的な問いに答えます。数段階前に現れた値へ戻るチェーンを考えてみます。各項は最初に現れたときだけ長さに1を加え、2回目の出現は停止位置を示すだけで追加されません。この定義は、値が自分自身へ戻る不動点にも、複数の値からなる長い循環にも適用されます。ある値が直ちに自分自身へ移る場合、その値を開始値にすると長さは1です。開始後に複数の値を通ってからその不動点へ到達する場合は、経路上の異なる値をすべて数えます。異なる開始整数が途中から同じ経路へ合流しても、合流前の固有部分が異なれば長さも異なります。アルゴリズムは安全な整数の正確な算術を使い、開始前に入力を検証し、出現済みかどうかを明示的に記録するため、推測した反復上限や数学的な近道には依存しません。
計算機を確実に利用するために
n欄には、0以上の安全な整数を入力してください。小数はこの操作が想定する10進数の桁列を持たず、負数は定義された対象外であるため、整数のみを受け付けます。ブラウザー版は、個別の実験、授業での実演、階乗チェーンを学ぶ際の答え合わせに便利です。選んだ複数の入力をプログラムで比較したり、問題を作成したり、別の方法で得た結果を検証したりする場合はAPIをご利用いただけます。1回のリクエスト料金は $0.002 です。計算は決定的であり、同じ整数からは必ず同じ長さが得られます。ネットワーク通信、乱数、現在時刻、外部データは使用しません。最初の変換で値が大きくなる場合でも、各桁の階乗和はすぐに有限で有界な範囲へ入るため、出現済みの値を記録することで自然に終了を判定できます。再現可能な記録には、元の入力と返された長さを残し、他の資料と比較するときは2回目の出現を数えない規則を明記してください。
活用例
数論の数列を調べる
開始値から各桁の階乗和をたどり、同じ項へ到達するまでにいくつの異なる値が現れるか測定します。
学習問題の答えを確認する
手計算した階乗チェーンを検証し、異なる項が一貫した規則で数えられているか確認できます。
選んだ開始値を比較する
複数の整数についてAPIを呼び出し、再現可能な実験として各チェーンの長さを比較します。
よくある質問
長さは具体的に何を数えますか?
開始整数から最初の反復直前に現れる最後の新しい値まで、異なる値を数えます。2回目に現れた値は重ねて数えません。
開始値も長さに含まれますか?
はい。開始整数はチェーンで最初の異なる値であり、返される長さに1として含まれます。
数字の0はどのように扱いますか?
0は0!として計算し、その値は1です。したがって、開始値が0の場合、次の値は1になります。
nに負数や小数を指定できますか?
いいえ。入力は0以上の安全な整数でなければなりません。負数や小数を指定すると、無効な入力としてエラーになります。
APIリクエストの料金はいくらですか?
APIリクエスト1回の料金は $0.002 です。このページのブラウザー上でも直接計算できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/digit-factorial-chain \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":69}'const res = await fetch("https://api.kit.forhosting.com/numth/digit-factorial-chain", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 69
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/digit-factorial-chain",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 69
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/digit-factorial-chain", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":69}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":69}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/digit-factorial-chain", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 69
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.digit_factorial_chain",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |