ガウス整数の素因数分解
0でないガウス整数をガウス素数に分解します。5は −i · (1+2i) · (2+i) となり、単数、指数、ノルムも一覧で分かります。1 + i や、素数のまま残る素数、分解する素数も一貫して扱えるので、代数の課題の確認に役立ちます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- A
- 5
- B
- 0
- ガウス整数
- 5 -i
- ノルム
- 25
- 単数 (実部)
- 0
- 単数 (虚部)
- -1
ガウス整数とは、実部と虚部が通常の整数である複素数 a + bi です。通常の整数が有理素数へ一意に分解されるように、零でないガウス整数も単元と順序を除けばガウス素数へ一意に分解されます。この計算機は対 (a, b) を受け取り、環 Z[i] 上で決定的な分解を行い、{1, −1, i, −i} の単元、第一象限の好ましい同伴元に正規化した各ガウス素因子とその指数、乗法ノルム a² + b²、および簡潔な分解文字列を返します。代数的整数の宿題の検算、ガウス整数に依拠する暗号デモの監査、あるいは Z[i] 上の試行ループを手書きせずに構造化素数を別パイプラインへ渡す用途に使えます。零は素因数分解を持たないため拒否されます。
ガウス素数分解が返すもの
ガウス整数は環 Z[i] の元であり、整数 a, b により a + bi と書きます。乗法ノルムは N(a + bi) = a² + b² で、積の下で乗法的な非負の通常整数です。Z[i] の単元はノルム 1 の元、すなわち 1, −1, i, −i に限られます。
単元でないガウス整数 π が Z[i] で素数であるとは、二つの非単元の積として書けないときです。
構造定理は古典的です。 有理素数 2 は単元と (1 + i) の二乗として分岐し、p ≡ 3 (mod 4) の有理素数は Z[i] で素数のまま(惰性)であり、p ≡ 1 (mod 4) の有理素数はノルム p の共役な二つのガウス素数の積に分裂し、p を二つの平方の和として書くことで復元できます。
したがって a + bi の分解は、ノルムを通常整数で因数分解し、各有理素数を Z[i] に持ち上げ、対応するガウス素数を厳密除算で取り除くことに帰着します。
構造化されたガウス素数が役立つ場面
代数と数論の講義では通常整数の一意分解の直後に Z[i] を導入します。学習者には単元と素数を切り分け、1 + i、3 を法として 3 に合同な惰性素数、1 を法として 1 に合同な分裂素数を一貫して扱う信頼できる神託が必要です。
イデアルやノルム、Z[i] 上の簡単な格子例を示す暗号デモでは、本格的な計算機代数システムを立ち上げずに挑戦元の素因子を示せます。研究ノートや自動パイプラインはこの出力を gcd 計算、イデアル生成元、ノルム方程式へ連鎖できます。
活用例
代数の宿題と試験
a+bi をガウス素数へ分解する学生解答を、単元や 1+i の冪の特例も含めて検算します。
コンテストと LMS の自動採点
零を拒否し順序付き素数冪を返す決定的神託で、ガウス整数の分解問題を採点します。
ノートブックと暗号デモ
CAS を入れずに、構造化 Z[i] 素数をノルム方程式・イデアル例・授業向け暗号スケッチへ渡します。
よくある質問
ガウス整数 a + bi をどう分解しますか?
応答は {1,−1,i,−i} の単元、指数付きガウス素数冪、ノルム a²+b²、分解文字列を列挙します。
結果のガウス素数はどう書かれますか?
各素数は第一象限の好ましい同伴元(可能な限り正の実部と非負の虚部)に正規化されます。
通常の素因数分解との違いは何ですか?
通常の素因数分解は Z 上です。本ツールは Z[i] 上で、2 は 1+i の冪になり得、素数 ≡ 1 (mod 4) は共役対に分裂し、素数 ≡ 3 (mod 4) は素数のままです。
5はガウス整数ではどう分解されますか?
5は −i · (1+2i) · (2+i) と書けます。2つの因数のノルムはどちらも5で、単数 −i によって積がちょうど5になります。通常の整数では素数でも、ガウス整数では分解できます。
どの素数がガウス整数でも素数のままですか?
4で割って3余る素数、例えば3は素数のままです。4で割って1余る素数は共役な2つのガウス素数に分かれ、2は単数と (1 + i) の2乗の積になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/gaussian-integer-factor \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":5,"b":0}'const res = await fetch("https://api.kit.forhosting.com/numth/gaussian-integer-factor", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 5,
"b": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/gaussian-integer-factor",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 5,
"b": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/gaussian-integer-factor", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":5,"b":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":5,"b":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/gaussian-integer-factor", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 5,
"b": 0
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.gaussian_integer_factor",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
無料のブラウザ経路と API は同一の純粋モジュールを共有するため、教室の検算と本番クライアントが同じ入力で食い違うことはありません。
ガウス素数分解が返すもの
このエンドポイントはその分解を安定した形で返します。好ましい単元、ノルム昇順ついで実部・虚部で並べた素数、可能なら第一象限(非負の虚部と正の実部)に書いた各素数、さらに omega(相異なる素基底)、big_omega(総重複度)、単元とガウス素数のフラグ、人が読める分解文字列です。同じ決定的経路が無料のブラウザツールと有料 API(成功リクエストあたり $0.002)の両方を支えます。
呼び出し方と結果の読み方
a には real または re、b には imag または im の別名も受け付けます。零は Z[i] で素因数分解を持たないからです。合成の例として、五は単元×(1 + 2i)×(2 + i)、二は単元×(1 + i) の二乗、三は惰性有理素数 3 として素数のまま、といった形があります。必須の整数フィールド a(実部)と b(虚部)を持つ JSON オブジェクトを POST します。各部は JSON 整数か、カンマ・空白・科学記数法を含まない素の十進文字列でよく、ノルム上の試行除算が現実的であるよう各絶対値は百万以内に収める必要があります。対 (0, 0) は invalid_input で拒否され課金されません。1, −1, i, −i などの単元は factors 配列が空、is_unit が true、unit フィールドにその単元自身という成功応答になります。成功時の本体は a と b、3+4i のような簡潔な gaussian 文字列、十進ノルム、unit と unit_re/unit_im、re・im・prime・exponent・norm を持つ順序付き factors 配列、さらに omega、big_omega、factorization、is_unit、is_prime を含みます。is_prime は素基底が一つで指数が 1 のときだけ true です(入力がガウス素数の同伴元)。検証失敗は残高を消費せず、成功した分解のみ公開の $0.002 が請求されます。
構造化されたガウス素数が役立つ場面
ガウス整数上の分解を求めるコンテスト問題やプログラミングジャッジには、採点者が手で解釈する自由文ではなくバイト安定な JSON 契約が有利です。対話的な探索にはブラウザ経路を、バックエンドやノートブック、バッチジョブで多数のガウス整数をサブスクリプションなしの単一前払い KIT 残高の下で分解するときは API を使ってください。
技術的な質問
なぜ零は拒否されるのですか?
Z[i] の零元は素因数分解を持ちません。API は (a, b) = (0, 0) に invalid_input を返し、リクエストを課金しません。
ガウス整数の素因数分解計算機は無料ですか?
ブラウザツールはお使いの端末上で無料です。API 呼び出しは成功リクエストあたり $0.002 の前払い KIT 残高を使い、無効入力は課金されません。