奇数部分・相異なる部分への分割数計算
数を奇数の和として書く方法の数を数えます。10の奇数部分への分割は10通りで、オイラーの定理により、異なる部分に分ける方法の数も同じです。0から5000まで正確に求められます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- N
- 10
- 数量
- 10
この計算機は、非負整数 n を正の奇数の和として表す方法の個数を、順序を区別せず正確に返します。オイラーの分割定理により、この個数は、すべての部分が互いに異なる分割の個数とも一致します。整数を入力すると、浮動小数点による近似ではなく、正確な十進結果を取得できます。計算は決定的で、ネットワークを使用せず、ゼロの空分割を1つの有効な分割として扱います。
この計算機が数えるもの
整数分割とは、正の整数の和で整数を表し、加数の順序を区別しない考え方です。同じ加数を逆順に並べても別の分割にはなりません。この計算機の第一の見方では、各部分を奇数に限定します。
同じ奇数を繰り返し使うことはできます。同時に、正の整数を2回使わない相異なる部分への分割数も求めています。各要素の形は通常異なりますが、この2つの集合の大きさは、任意の非負整数 n について等しくなります。
そのため、奇数の加数を使う問題にも、重複しない加数を求める問題にも同じ結果を利用できます。n がゼロなら、慣例的な空和に対応して答えは1です。通常の整数分割はこの文脈では非負の対象にのみ定義されるため、負数は拒否されます。
奇数部分と相異なる部分が一致する理由
オイラーの定理は、母関数または直接的な変換で理解できます。各奇数部分を任意回使える場合、奇数ごとに幾何級数の因子を持つ積が得られます。一方、相異なる部分では、各正整数を1回選ぶか選ばないかの積になります。
両方の積の係数は一致するため、指定した n の係数も同じ個数になります。構成的には、繰り返された奇数部分から2の累乗を取り出し、等しい複製をまとめることで、合計を変えずに相異なる部分を作れます。この操作は逆にたどれるため、単なる数値的一致ではなく全単射です。
実装では相異なる部分の側を動的計画法で数えます。候補となる部分を1回ずつ処理し、目標の和を降順に更新します。降順にすることで、同じ処理中にその部分を再利用できません。
BigInt の正確な演算ですべての桁を保持し、最後に十進文字列へ変換します。
結果の使い方と読み方
n には、ゼロから公開上限までの非負整数を指定してください。応答は n を再掲し、条件を満たす分割の正確な個数を count に示します。オイラーの恒等式により両方の個数は同一なので、奇数部分モードと相異なる部分モードを選ぶ必要はありません。
組合せ論の演習確認、係数表の検証、母関数を扱う記号計算コードのテスト、別の決定的プログラム用の参照値作成に利用できます。出力が数えるのは順序を区別しない分割であり、組成ではありません。同じ項の順序を変えても新しい結果にはなりません。
奇数部分という解釈では値の繰り返しが許されますが、相異なる部分という解釈では禁止されます。任意精度整数を扱えない後続システムでは、大きな答えを文字列のまま保持してください。分数、未入力、上限超過、負の整数には型付き入力エラーを返します。
活用例
組合せ論の演習を確認
奇数の加数を使う問題や、すべての部分を相異ならせる問題の正確な個数を検証できます。
母関数を検証
計算した係数を、オイラーの分割恒等式に基づく独立した正確な個数と比較できます。
参照表を作成
テスト、教材、整数列研究に利用できる決定的な十進個数を生成します。
よくある質問
正確には何が返されますか?
n と、n を奇数部分へ分割する正確な個数を返します。これは相異なる部分への分割数でもあります。
順序は区別されますか?
いいえ。 分割は順序を持たないため、同じ加数を並べ替えても別の分割にはなりません。
10を奇数部分に分割する方法は何通りですか?
10通りです。それぞれ10を奇数の和で表し、同じ数の繰り返しは許され、順序は区別しません。同じ10通りが、繰り返しのない部分で10を表す方法の数にもなります。
なぜ1つの数で2つの問いに答えられるのですか?
オイラーの分割定理によれば、奇数部分への分割と異なる部分への分割は、どの数でも同じ個数です。等しい部分をまとめると一方が他方に変わり、その操作は元に戻せます。
どこまでの数を入力できますか?
0から5000までの整数です。負の数は受け付けません。0の結果は1で、空の和を唯一の分割と数えるためです。大きな結果もすべての桁を表示します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/partitions-distinct-odd \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":10}'const res = await fetch("https://api.kit.forhosting.com/numth/partitions-distinct-odd", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/partitions-distinct-odd",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/partitions-distinct-odd", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/partitions-distinct-odd", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 10
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.partitions_distinct_odd",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_n | 5000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
この計算機が数えるもの
また、大きな正確な整数を JSON の数値範囲で丸めないよう、個数は十進文字列として返します。
結果の使い方と読み方
API による自動処理は1回あたり $0.002 です。
技術的な質問
count が文字列なのはなぜですか。
分割数は JSON 数値の安全な整数範囲を超える場合があるため、十進文字列ですべての桁を保持します。
n がゼロの場合はどうなりますか。
空分割を表すため、個数は1になります。
負の整数を指定できますか。
いいえ。負の n には invalid_input エラーを返します。
API リクエストの料金はいくらですか。
API リクエスト1回あたり $0.002 です。