アリコット数列計算機
アリコット数列は正の整数から始まり、現在の項をその数の正の真の約数の和で繰り返し置き換える数列です。この計算機は決定論的に反復し、到達したすべての項を表示します。指定したステップ数を使い切った場合、0に達した場合、または同じ値を検出した場合に停止します。厳格な安全上限により、途中の項が予想外に大きくなる計算を防ぎ、学習、実験、検証処理で再現可能な結果を得られます。
無料で実行
開始値を選び、各遷移の意味を確認します
正の整数をstartに入力し、1から100までのstep_limitを指定してください。開始値は必ず返却される数列の先頭です。各遷移では、直前の項をアリコット和、つまりその数自身より小さい正の約数の合計に置き換えます。たとえば12の真の約数は1、2、3、4、6なので、次の項は16です。16の真の約数は1、2、4、8であり、その次は15になります。上限が数えるのは表示項数ではなく遷移回数です。そのため10ステップなら、開始値を含めて最大11項を返します。自然な停止条件が現れれば、項数は少なくなります。この定義により計算量が明確になり、手計算、教材、別の実装との照合も容易です。APIではn、number、valueを開始値の別名として、stepsを上限の別名として使用できます。
停止理由と循環情報を読み取ります
結果には、生成された数列全体、実行済み遷移数、停止理由が含まれます。step_limitは指定された遷移をすべて完了したことを示します。zeroは0に到達したことを示し、真の正の約数を持たない1の後によく発生します。cycleは、新しく計算した値がすでに数列内に存在したことを示します。循環を目で確認できるよう、重複した値も最後の項として含め、cycle_start_indexで以前の位置を0始まりで示します。したがって完全数は直ちに循環し、6から始めると6、6となり、位置は0です。循環がなければcycle_start_indexは-1です。これにより無駄な反復を避けながら、非反復部分と周期部分を再構成できます。
大きな項を安全かつ再現可能に扱います
開始値は公開された安全上限である1兆以下でなければならず、生成された各項も数列へ追加する前に同じ上限で検査されます。途中のアリコット和が上限を超えると、安全でない遷移を示す無効入力エラーを返します。数学的に誤った数列になるため、値を切り捨てたり、丸めたり、小さな値へ黙って置き換えたりはしません。各和は決定論的な整数因数分解と約数和の乗法公式で求めます。ネットワーク、乱数、現在時刻、保存状態には依存しないため、同じ入力はブラウザーでもAPIでも同じ出力になります。未知の開始値を調べる際は小さなステップ上限から始め、項が扱える範囲なら増やしてください。APIの1リクエスト当たりの料金は$0.002です。明示的な項とステップの上限が処理量を制限します。
活用例
整数論的な挙動を調べる
真の約数の和を順に追い、0へ到達するか、循環するか、そのまま続くかを確認できます。
学習問題の答えを確認する
生徒や教材の数列を、実行した遷移数が明確な決定論的リストと照合できます。
数学ソフトウェアを検証する
上限付きで安定した出力を、別の実装やデータ処理を検証する際の基準として利用できます。
よくある質問
アリコット数列とは何ですか?
各項が、直前の項の正の真の約数をすべて足した値になる数列です。
ステップ上限に開始値は含まれますか?
含まれません。遷移を数えるため、10ステップでは開始値を含めて最大11項を表示します。
上限より前に停止するのはなぜですか?
0または既出の値に達すると、その後は0か周期的な繰り返しになるため早期に停止します。
項が大きすぎる場合はどうなりますか?
部分的または数値的に安全でない数列は返さず、無効入力エラーとして処理します。
APIリクエストの料金はいくらですか?
APIリクエスト1回の料金は$0.002です。同じ決定論的ロジックをブラウザーでも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/aliquot-sequence \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":12,"step_limit":10}'const res = await fetch("https://api.kit.forhosting.com/numth/aliquot-sequence", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": 12,
"step_limit": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/aliquot-sequence",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": 12,
"step_limit": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/aliquot-sequence", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":12,"step_limit":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":12,"step_limit":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/aliquot-sequence", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"start": 12,
"step_limit": 10
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.aliquot_sequence",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_term | 1000000000000 |
max_steps | 100 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |