平方因子を持たない数の判定ツール
30は2 × 3 × 5と各素数が1回ずつなので平方因子を持たず、12は2の平方で割り切れるため該当しません。正の整数を入力すると、理由付きで判定が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
平方因子を持たない数とは、素因数分解に同じ素数が2回以上現れない正の整数です。このツールでは、公開されている上限内の正の整数について、条件を満たすかどうかを明確に判定できます。条件を満たさない場合は、その平方が入力値を割り切る素数も示すため、結果の理由を簡単に検算できます。計算は常に同じ入力から同じ結果を返し、ネットワークには接続しません。通常の数学上の定義に従い、1も平方因子を持たない数として扱います。
平方因子を持たない数の意味
正の整数が平方因子を持たないとは、どの素数でもその整数を2回以上割れないことを意味します。言い換えると、平方すると入力値を割り切るような素数 p が存在してはいけません。たとえば30の素因数分解は 2 × 3 × 5 であり、各素数が1回ずつしか現れないため、条件を満たします。
一方、12は 2² × 3 と分解でき、2の平方で割り切れるため、条件を満たしません。1は重要な境界例です。 1の素因数分解には要素がなく、重複する素数もないので、平方因子を持たない数に含まれます。このツールは、この定義をそのまま計算に用います。
結果には元の値と真偽値 squarefree が含まれます。
判定の計算方法
アルゴリズムは正確な整数演算と上限のある試し割りを使用します。最小の素因数候補から始め、候補を小さい順に調べます。候補が残りの値を割り切った場合は、その因子を1つ取り除き、同じ候補でもう一度割り切れるかを直ちに確認します。
2回目も割り切れれば、その候補の平方が元の入力値を割り切るため、平方因子を持たない数ではないと確定し、計算を終了できます。1回だけなら、縮小した残りの値に対して探索を続けます。残りの値の平方根を超える候補を試す必要はありません。
合成数である残りの値には、その平方根以下の因子が必ずあり、最後に大きな値が残った場合は、それ自体が1つの素因数だからです。この方式では、確率的素数判定、保存済みの表、外部サービス、浮動小数点による近似を使用しません。
公開上限によって処理量を予測可能にし、JavaScript の安全な整数であることを検証して、すべての除算と剰余が入力された整数を正確に表すようにしています。
入力方法と結果の読み方
n には正の整数を指定してください。小数、分数、科学表記の文字列、区切り記号を含む書式付きの数は指定できません。この機能は正の整数に対する通常の定義に従うため、1未満の値はエラーになります。
また、実行時間を有限に保つため、文書に示された最大値を超える入力も受け付けません。squarefree が真であることは、整数に素数の平方因子がないことを表しますが、その整数が素数であることを表すわけではありません。6、30、42などは合成数ですが、異なる各素因数が1回ずつしか現れないため、平方因子を持たない数です。
入力値にほかの重複素因数があっても、性質の判定には1つで十分なので表示されない場合があります。この出力は、検証規則、整数論の実験、分類だけを必要とする前処理に利用できます。アルゴリズムが入力を第三者サービスへ送信することはありません。
活用例
数値データセットの検証
保存された正の整数を分類し、以後の分析に進む前に素数の平方因子を含む行を特定できます。
算数・数学問題の確認
提示された答えが条件を満たすか確認し、満たさない場合は重複する素数を簡潔な根拠として利用できます。
生成した数列の絞り込み
完全な素因数分解を毎回計算・保存せず、決定的な処理で平方因子を持たない項だけを残せます。
よくある質問
1は平方因子を持たない数ですか?
はい。 1には素因数がないため、その素因数分解に平方として現れる素数もありません。
平方因子を持たないことは素数であることと同じですか?
いいえ。 各素因数が1回だけ現れる合成数も条件を満たします。30がその例です。
平方因子を持つ数の場合、結果には何が表示されますか?
入力した数を割り切る平方を持つ素数が1つ表示されます。12なら4で割り切れるので2です。この素数1つで十分な根拠になるため、完全な素因数分解は必要ありません。
小数や負の数も判定できますか?
できません。受け付けるのは正の整数だけです。1未満の値、小数、分数、指数表記、桁区切りの付いた数は、推測で解釈せずに受け付けません。
平方因子を持たないかどうかはどのように調べますか?
素因数の候補を小さい順に試します。割り切れたら1つ取り除き、同じ候補でもう一度割ります。2回目も割り切れれば、その平方で割り切れるということです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/squarefree-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":30}'const res = await fetch("https://api.kit.forhosting.com/numth/squarefree-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/squarefree-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/squarefree-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/squarefree-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 30
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.squarefree_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_n | 1000000000000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
平方因子を持たない数の意味
判定が偽の場合、repeated_prime に2回以上現れる素数を1つ示します。この値を平方し、元の数をそれで割って整数の商になることを確かめれば、完全な素因数分解を求めなくても、なぜ条件を満たさないのかを確認できます。
判定の計算方法
同じ入力で繰り返し実行すると、常に同じ JSON 結果になります。
入力方法と結果の読み方
偽の場合に返る repeated_prime は判定の根拠となる1つの値であり、完全な素因数分解ではありません。ブラウザーでは同じ純粋な計算を端末内で実行し、API リクエストは1回 $0.002 です。
技術的な質問
repeated_prime は何を示しますか?
その平方が n を割り切る素数を1つ示します。入力には、表示されない別の重複素因数が含まれる場合もあります。
0や負の整数を入力できますか?
いいえ。この機能は正の整数だけを受け付け、n が1未満の場合は invalid_input エラーを返します。
API での判定料金はいくらですか?
API リクエスト1回あたり $0.002 です。ブラウザー版では同じ決定的な計算を端末内で実行します。