剰余計算機
剰余(または「mod」)の演算は、整数除算後の余りを返します:17 = 3·5 + 2 なので 17 mod 5 = 2 です。時計算術、暗号、ハッシュ関数、SQLの「N行ごと」パターンの中核です。この計算機は整数または小数のオペランドを受け取り、商と余りを明示的に表示し、言語間の符号規約の違い(負数についてPythonの% ≠ Cの%)を扱います。
a mod b を計算する方法
-
1
被除数(a)と除数(b)を入力
任意の数。小数と負数も可。
-
2
符号規約を選ぶ
切り捨て除算(C、Java、Go)、床除算(Python、Ruby、数学の規約)。
-
3
商と余りを読む
a = q·b + r、rの符号は選んだルールに従います。
-
4
数式を見る
値を代入することで各ステップが見えます。
負数の2つの規約
正のオペランドでは、すべての規約が一致します:17 mod 5 = 2。負数では言語が異なります。
| 言語 | -17 mod 5 |
規約 |
|---|---|---|
| Python, Ruby | 3 | 床(切り下げ) |
| C, Java, Go, JS | -2 | 切り捨て |
| 数学の教科書 | 3 | 床(通常) |
床除算: 商は−∞方向に丸められます。余りは常に除数の符号を持ちます:bと同符号。
切り捨て除算: 商はゼロ方向に丸められます。余りは被除数の符号を持ちます:aと同符号。
a = -17、b = 5 の場合:
- 切り捨て: q = -3(0方向に丸め)、r = -17 − (-3)·5 = -2。
- 床: q = -4(-∞方向に丸め)、r = -17 − (-4)·5 = 3。
規約のもとではどちらも正しいです。言語に合わせて選んでください。
剰余が現れる場所
- 時間。 1時間の分、曜日、1日の秒、すべてmod算術。
- ハッシュテーブル。
hash(key) mod table_sizeがバケットを選びます。 - ラウンドロビンのスケジューリング。
task_i mod worker_countが仕事を割り当てます。 - 暗号。 RSAとDiffie-Hellmanは巨大な素数によるmod
nの上に構築されます。 - N行ごと。 SQLで:
WHERE id % 3 = 0。 - 偶奇のチェック。
n mod 2 == 0は偶数を意味します。 - 交互のパターン。 行のストライプ、1つおきの項目の色付け。
- 循環バッファ。
(index + 1) mod sizeで折り返します。
役立つ恒等式
(a + b) mod n = ((a mod n) + (b mod n)) mod n(a · b) mod n = ((a mod n) · (b mod n)) mod n(a^k) mod nは高速なモジュラー冪乗でO(log k)で計算できます、大きな数の暗号に不可欠です。- 任意の整数aについて
a mod 1 = 0。 a mod a = 0。
小数の剰余
実数では、自然な定義は a mod b = a − b · floor(a/b) です。7.5は2.5のちょうど倍数なので 7.5 mod 2.5 = 0。7.6 mod 2.5 = 0.1。
JavaScriptの%演算子は実数に対して動作します。Pythonのfmodは切り捨ての実数modを行い、Pythonの%は床の実数modを行います。
計算例
100 mod 7:100 = 14·7 + 2、よって余り2。25 mod 4:25 = 6·4 + 1、よって余り1。-10 mod 3(床):-10 = -4·3 + 2、余り2。(切り捨てなら-1。)17.5 mod 5:17.5 = 3·5 + 2.5、余り2.5。
よくある質問
ほとんどの場合は同義語です。形式的には、「modulo」は数学的(床)の規約を含意することが多く、「remainder」は切り捨て(C方式)の変種を指すことが多いです。名前は言語のドキュメントにも漏れ込みます。重要なときは規約を明記してください。
Pythonは数学の規約(床)に従い、余りの符号を除数に合わせます。CはハードウェアのALUの規約(切り捨て)に従い、余りの符号を被除数に合わせます。どちらも間違いではなく、異なる選択です。
いいえ、ゼロ除算は未定義です。計算機はb = 0に対してエラーを返します。
通常は、はい。負数の扱いについては言語の仕様を確認してください、PythonとRubyはC、Java、Go、JavaScriptと異なります。
2048ビットの数によるRSA方式の計算には、専用のライブラリ(Pythonのpow(a, b, n)、JavaのBigInteger.modPow)を使ってください。この計算機は日常的な値を扱い、暗号グレードのものは扱いません。
関連ツール
変動係数計算ツール
任意のデータセットの変動係数(CV)を計算します。CVの割合、平均、標準偏差を、標本または母集団の設定で確認できます。
カメラ画角・撮影範囲計算ツール
センサー寸法、焦点距離、撮影距離から、水平・垂直・対角画角と実際に写る幅・高さを計算します。
平方根計算機
正の数、0、負の数の平方根を計算します。小数近似、整数入力に対する簡約した根号表現、完全平方数と複素数の平方根についての要点を確認できます。
RAID 容量計算ツール
RAID 0、1、5、6、10、50、60 の容量を比較。異なるドライブ容量、パリティースパン、ホットスペア、TB と TiB、平均ドライブ価格を計算できます。
スピーカーインピーダンス計算機
同一仕様のパッシブスピーカーを直列、並列、平衡直並列に接続したときの公称負荷を計算し、アンプの最小負荷と比較します。
本の背幅計算ツール
KDPとLuluの公式計算式、または印刷会社指定の係数から、ペーパーバックの背幅と表紙全体の寸法を見積もります。奇数ページにも対応。
このツールは他の言語でも利用できます
- Máy tính modulo [VI]
- Modulokalkylator [SV]
- Modulo-Rechner [DE]
- Calculadora de Módulo [ES]
- เครื่องคำนวณโมดูโล (Modulo) [TH]
- حاسبة باقي القسمة (Modulo) [AR]
- 모듈로 계산기 [KO]
- Calculateur de Modulo [FR]
- Kalkulator Modulo [ID]
- Modulo-calculator [NL]
- Kalkulator modulo [PL]
- Calculadora de Módulo [PT]
- Modulo Calculator [EN]
- Calcolatore Modulo [IT]
- Калькулятор остатка от деления [RU]
- Modulo Hesaplayıcı [TR]
- 取模计算器 [ZH]