素因数分解の学習
素因数分解とは、整数を素数だけの積に書き直すことです。この学習用計算機では、指数を使った簡潔な答え、個々の素因数、1に到達するまでのすべての割り算を表示します。学ぶべき方法を省略せずに、宿題の答えを確認できます。分数の約分、最大公約数や最小公倍数の計算、素数の判定にも役立ちます。対応範囲の整数を入力すると、ノートに写しやすい明確で常に同じ手順の説明が得られます。
無料で実行
最小の素数から始めます
まず、入力した数が最小の素数2で割り切れるか確認します。割り切れる場合は割り算を行い、2を因数として記録します。同じ素数が複数回現れることがあるため、得られた商も再び2で試します。2で割ると余りが出るようになってから3へ進み、その後は可能な奇数の約数を順番に調べます。この計算機は、割り切れた各計算を被除数、除数、商として記録し、学校で習う連続除法の形で示します。たとえば360を2で割ると180、もう一度2で割ると90、さらに割ると45です。ここで2では割り切れないため、次に使う素数は3です。小さい順に調べれば因数を見落とさず、商も少しずつ簡単になります。残った商自体が素数なら、それが最後の因数となり、1まで割って終了します。記録された除数の一覧が、元の整数の完全な素因数分解です。
同じ因数を指数でまとめます
正しい因数の一覧は、同じ素数をまとめることで短く書けます。2が3回現れる場合は2^3と書き、「2の3乗」と読みます。指数は、その素数を何個掛け合わせるかを表すもので、別の因数ではありません。したがって2^3は2 × 2 × 2であり、2 × 3ではありません。構造化された結果では各素数と指数を組にし、答えの行では学校で一般的な表記を使います。確認するときは、各累乗を展開してすべての因数を掛けてください。360なら短い表記は2^3 × 3^2 × 5です。展開すると2 × 2 × 2 × 3 × 3 × 5となり、積は360です。この逆算により、因数の写し間違いや指数の誤りを見つけられます。入力が素数なら、その数自身だけが指数1で現れます。1は重要な例外です。素数でも合成数でもなく、素因数を持たないため、このツールではその点を明示します。
別の問題に素因数分解を利用します
素因数分解を使うと、多くの算数問題を指数の比較として解けます。最大公約数では、2つの数を分解し、共通する素数だけを小さい方の指数で採用します。最小公倍数では、現れるすべての素数を大きい方の指数で採用します。分数の約分も同じ考え方で、分子と分母に共通する素因数を対にして消します。2つの数に2^3と2^2が含まれるなら、共通部分は2^2で、指数3の側に2が1個残ります。因数を明確に書けば、考え方が見えやすくなります。割り算の手順は誤答の発見にも役立ちます。ご自分の答えと異なる場合は、除数または商が最初に違う箇所を比べ、割り切れるか確認して、正しい商から続けてください。この機能は正確な整数演算と固定手順を用い、乱数や外部情報を使いません。そのため、同じ入力には毎回同じ途中式が返されます。
活用例
因数分解の樹形図を確認
手書きの樹形図の末端を、完全な素数一覧および指数表記と比較できます。
分数を約分
分子と分母に共通する素因数を見つけ、対応する組を消去できます。
公倍数を求める
複数の数の指数表記から、最大公約数または最小公倍数を計算できます。
よくある質問
料金はいくらですか?
ブラウザーでは無料で利用でき、API リクエスト1回の料金は $0.002 です。
1は素数ですか?
いいえ。1は素数でも合成数でもなく、素因数を持ちません。
指数を使うのはなぜですか?
同じ素数が因数として何回現れるかを、指数で簡潔に表せるためです。
結果をどう確認できますか?
各累乗を繰り返しの掛け算に展開し、すべての素数の積が入力値と一致するか確認してください。
小数や負の数を入力できますか?
いいえ。ここでは1から1,000,000,000,000までの正の整数を対象とします。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/edu/prime-factorization-school \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":360}'const res = await fetch("https://api.kit.forhosting.com/edu/prime-factorization-school", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": 360
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/prime-factorization-school",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": 360
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/prime-factorization-school", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":360}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":360}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/prime-factorization-school", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"number": 360
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.prime_factorization_school",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |