階乗の末尾ゼロ
100の階乗の末尾には24個のゼロが並びます。100には5が20回、25が4回入り、20 + 4 = 24だからです。0以上の整数を入力すると、各段階付きで末尾のゼロの数が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- N
- 100
- 末尾のゼロ
- 24
階乗の末尾ゼロとは、n!の十進展開の末尾にあるゼロのことです。n! そのものを計算するのは、ゼロの個数を求めるよりはるかに早く実用を外れます。二十五の階乗はすでに末尾が六ゼロ、百の階乗は二十四ゼロです。数論の標準的な近道は、積全体を掛け合わせません。五が積を何回割るかを、nを五で、二十五で、百二十五で…と割った床関数の和で数えます。n! では二の因数が常に五より多いため、その和が末尾ゼロの個数そのものです。本計算機は、任意の非負整数nに対してその決定的な和を実装し、合計を返し、検証用に各五のべきの寄与を列挙します。負のnは入力エラーで拒否され、課金されません。
なぜ n! の末尾ゼロが五の因数の個数に等しいのか
nの階乗を、nまでのすべての正の整数の積として書きます。十進では、各末尾ゼロは十の因数から生まれ、十は二と五の因数対です。n! の素因数分解では、二の指数は常に五の指数以上なので、完全な十の個数は希少な素数に制限されます。
五の指数は、すべての正整数kについて、五のk乗の倍数のうちn以下の個数の和です。その量はnを五のk乗で割った床です。それらの床の和がしたがって末尾ゼロの個数になります。
古典的な検算は式と一致します。五の階乗は百二十でゼロが一つ、十の階乗は三百六十二万八千八百でゼロが二つ、二十五の階乗は二十五を五で割った床と二十五を二十五で割った床、つまり五たす一で六です。ゼロの階乗と一の階乗はともに一なので、末尾ゼロは零です。
同じ恒等式は競技プログラミング問題、面接のウォーミングアップ、n!における素数の指数に関する de Polignac の公式の教科書演習にも現れます。五のべきの和を理解すると、n!
の最後の非ゼロ桁や二項係数の末尾ゼロといった関連問題も、同じ素数指数の帳尻から始まることがはっきりします。
本計算機が五のべきの和を評価する仕組み
実装は、nが存在し、有限で、整数で、負でないことを検証し、累積合計と五から始まるべきを初期化します。現在のべきがn以下のあいだ、nをそのべきで割った床を合計に加え、べきと床の寄与を監査リストに記録し、次の項のためにべきを五倍します。次のべきがnを超えるか安全整数範囲を溢れるとループが終わります。
これは通常の教室・競技入力をはるかに超えます。階乗の積が具体化されることはなく、除算に浮動小数の近似は使わず、外部の算術サービスも参照しません。
活用例
宿題と競技の検証
学生と採点者は、任意の非負nについてn!の末尾ゼロ個数を確認し、階乗を展開せずに各floor(n/5^k)項を点検できます。
素数指数の教材
de Polignac の公式を導入する授業計画は、末尾ゼロの答えの横に五のべきの和を示し、学習者が五の因数と十進のゼロを結びつけられるようにできます。
よくある質問
nが負の場合はどうなりますか?
階乗の末尾ゼロはここでは非負整数のみに定義され、負数は拒否され課金されません。
なぜ五のべきだけで二のべきではないのですか?
各末尾ゼロには十の因数、つまり二かける五が必要です。n! では二の因数が常に五以上あるので、五の指数だけでゼロの個数が決まります。
n!そのものの値を返しますか?
いいえ。 n! の十進表記がいくつのゼロで終わるかだけを返します。計算はO(log n)のまま、n!を具体化するのが非現実的な大きなnでも正確です。
100の階乗の末尾にはゼロがいくつありますか?
24個です。100を5で割ると20、25で割ると4になり、それより大きい5のべきは100を超えるため、合計は20 + 4 = 24です。
25の階乗の末尾にはゼロがいくつありますか?
6個です。25を5で割ると5、25で割ると1になり、5 + 1 = 6です。5の2乗の分だけゼロが1つ増えます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/trailing-zeros-factorial \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":100}'const res = await fetch("https://api.kit.forhosting.com/numth/trailing-zeros-factorial", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/trailing-zeros-factorial",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/trailing-zeros-factorial", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/trailing-zeros-factorial", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 100
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.trailing_zeros_factorial",
"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、合計trailing_zeros、順序付き配列powersを返すので、手計算で和を再検算できます。負の入力、非整数、欠落したn、安全整数範囲外はinvalid_inputで失敗し、課金されません。
実用・限界・料金・提供
宿題セットを解くとき、競技のサンプルを確かめるとき、計算機代数系を入れずに素数指数を説明するときに素早い末尾ゼロ確認が必要なら、ブラウザツールを使ってください。受理される入力は安全整数範囲内の非負整数で、標準的な面接・オリンピック例はすでにすべてカバーします。言語モデルも遠隔電卓も乱数もないので、自動テストと再現可能なノートに固定して安全です。スクリプト、採点ハーネス、教育プラットフォームが多くのnについて安定したJSON回答を単一のアイテム課金契約で必要とするときはAPIを使います。成功した各リクエストは$0.002の課金アイテム一つで、検証失敗は残高を消費しません。結果は完全に決定的で、同じnは常に同じtrailing_zeros個数と、べき寄与の同じ順序付きリストを返します。数論デモ、de Polignac の公式を導入するアルゴリズム講義、面接対策ページ、あるいは近似ヒューリスティックや大きなnでメモリを食いつぶす不透明なブラックボックス階乗展開より厳密な整数演算をすでに信頼している前処理段階に、このエンドポイントを接続してください。
連携の活用例
自動化された数論パイプライン
末尾ゼロで階乗を分類したりクイズ解答を生成したりするスクリプトは、場当たり的なループを埋め込む代わりに、単一の決定的なアイテム課金エンドポイントを呼べます。
技術的な質問
このAPIで n! の末尾ゼロを数えるには?
非負整数フィールドnを含むJSON本体を能力numth.trailing_zeros_factorialへ送ってください。応答はtrailing_zerosと、五のべきのfloor寄与の順序付きリストを返します。
階乗の末尾ゼロ計算機は無料ですか?
ブラウザツールは端末上で無料で動きます。API呼び出しは前払いKIT残高を成功アイテムごとに$0.002で使い、検証失敗は課金されません。