Digitadition生成元
101の生成元は91と100の2つです。91 + 10も100 + 1も101になるからです。正の整数を入れると、生成元が小さい順にすべて表示され、ない場合は自己数だと分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- N
- 101
- 生成元
- 91, 100
- 数量
- 2
Digitadition(ディジタディション)は、D.R. Kaprekar が正の整数とその十進桁の和を足す操作に与えた名称です。n の生成元とは、m と m の桁和の合計が n に等しくなる整数 m のことであり、そのような m が一つもない数を自己数(self number)と呼びます。学習者、競技プログラマー、教材作成者は、与えられた n について自己数かどうかの真偽だけでなく、生成元の完全な一覧を必要とすることが多いです。
Digitadition生成元とは何か、なぜ探索が短いのか
非負整数 m の十進桁の和を s(m) と書きます。Digitadition は m を m プラス s(m) に写します。正の整数 n の生成元とは、m プラス s(m) が n に等しい任意の m です。
変形すると m は n マイナス s(m) となり、正の m の桁和は少なくとも 1 であり、m が 0 のときは結果も 0 のみなので、すべての生成元は n より真に小さくなります。桁和は桁数の 9 倍より速くは増えません。n 未満の任意の m について s(m) は n の桁数の 9 倍以下です。
したがってすべての生成元は、0 と n マイナス n の桁数の 9 倍との最大値から n マイナス 1 までの閉整数区間にあります。その窓を調べれば十分であり、大きな対象で 0 から n まで走査する必要はありません。
古典例:n が 21 のとき生成元は 15 のみ(15 プラス 6 が 21);n が 101 のとき生成元は 91 と 100(91 プラス 10 が 101、100 プラス 1 が 101);n が 20 のとき一覧は空で自己数です。
生成元の一覧が役立つ場面
教室や学習プラットフォームは、n 未満の候補を手作業で総当たりせずに Kaprekar の自己数を探れる Digitadition 生成元ツールを使います。オリンピックや競技プログラミングの出題者は、生成元一覧が空のとき自己数と判定し、証明済み窓の外の生成元を決して作らない決定的オラクルを必要とします。
教材ジェネレータは n の範囲を歩き、自己数を集め、選んだ対象の生成元をすべて列挙させるワークシートを作ります。無効入力は残高を消費しません。
活用例
教室での自己数チェック
学習者が n を送り、m プラス桁和が n となる各生成元 m を確認するか、一覧が空のとき n が自己数であることを確かめられます。
競技・LMS の自動採点
真偽フラグだけでなく、順序付きの完全な生成元一覧を返す決定的オラクルで Digitadition・自己数問題を採点します。
教材と研究のバッチ実行
スクリプトで n の範囲を歩き、件数と自己数フラグを集め、走査窓を再実装せずに表やワークシートを作れます。
よくある質問
Digitadition の生成元とは何ですか?
n の生成元とは、m と m の十進桁の和の合計が n に等しい整数 m です。例:15 は 15 + 1 + 5 = 21 なので 21 を生成します。
なぜ n は少なくとも 1 でなければなりませんか?
Digitadition 生成元は正の整数対象について定義されます。
n はいくつの生成元を持てますか?
通常は 0 個、1 個、または少数です。走査窓は n の桁数の約 9 倍の長さなので、大きな安全整数でも一覧は小さく保たれます。
101の生成元は何ですか?
91と100です。91の各桁の和は10で91 + 10 = 101、100の各桁の和は1で100 + 1 = 101になります。ほかに生成元はありません。
自己数とは何ですか?
生成元が1つもない正の整数のことです。自分の各桁の和を足してその数になる整数が存在しないため、一覧は空になり、自己数と表示されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/digitadition-generators \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":101}'const res = await fetch("https://api.kit.forhosting.com/numth/digitadition-generators", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 101
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/digitadition-generators",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 101
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/digitadition-generators", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":101}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":101}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/digitadition-generators", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 101
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.digitadition_generators",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
本機能は正の整数 n を受け取り、n 近傍の短く証明された候補窓を走査し、昇順の生成元一覧と件数、is_self_number フラグを返します。
Digitadition生成元とは何か、なぜ探索が短いのか
アルゴリズムは完全に決定的で、同じ n は常に同じ順序の generators 配列、同じ count、同じ is_self_number 真偽値を返し、乱数・ネットワーク・時計に依存しません。
入力契約、応答形、エラー挙動
1 未満の対象へのメッセージは、正の Digitadition 対象という数学的領域に合わせ、n が少なくとも 1 でなければならないと述べます。検証失敗は課金されません。段階的な桁展開が必要ならご自身の教材文と組み合わせてください。必須の正の整数フィールド n を持つ JSON オブジェクトを POST してください。別名 number、value、target も同じ意味で受け付けます。値は JSON 数、または符号任意の数字のみの文字列でよく、空文字・欠落・非整数・非有限値・1 未満の n は invalid_input で失敗します。成功時は正規化済み n をエコーし、generators を昇順整数配列、count をその長さ、is_self_number を配列が空のときだけ真、formula に m プラス digit_sum(m) が n に等しいことを短く再掲します。安全整数制限が適用され、n は JavaScript の最大安全整数を超えてはならず、IEEE-754 倍精度での桁抽出が正確に保たれます。テストに固定できる例:n が 101 なら generators は 91 と 100、count は 2、is_self_number は偽;n が 21 なら generators は 15 のみ;n が 20 なら空配列・count 0・is_self_number 真;n が 1 も自己数です。本エンドポイントは生成元一覧とメタデータのみを出します。
Digitadition生成元APIが役立つ場面
自己数の密度を研究するノートブックは、各言語で桁和ループを再実装せずに API をバッチ呼び出しし count を保存できます。実装は純粋な parse ティア A のため、成功した各呼び出しはモデルトークンも外向きネットワークもなく、公開済み基本価格 $0.002 です。
技術的な質問
自己数(self number)とは何ですか?
自己数とは生成元を持たない正の整数です。本 API は generators 配列が空のとき is_self_number を true にします(例:n = 20)。
料金はいくらですか?
ブラウザツールは無料でローカル実行です。API 要求は前払い KIT 残高を成功アイテムあたり $0.002 で使用し、無効入力は課金されません。