書籤    
鞋碼換算    
根號化簡    
梯形面積    
圓的計算    
扇形面積    
橢圓面積    
圓柱體積    
球的體積    
圓錐體積    
圓管體積    
年齡計算    
天數計算    
複利計算    
單利計算    
利息計算    
現值計算    
ROI 計算機    
IRR 計算機    
GDP 計算機    
ROAS 計算    
BMI 計算機    
BMR 計算機    
1RM 計算機    
進位轉換    
薪資換算    
油錢計算    
油耗計算    
坡度計算    
   新增
機率與隨機計算工具
獨立事件機率
獨立事件機率
兩事件機率反推
兩事件機率反推
重複試驗機率
重複試驗機率
條件機率與貝氏定理
條件機率與貝氏定理
期望值計算機
期望值計算機
二項分布計算機
二項分布計算機
排列組合計算
排列組合計算
環狀排列計算
環狀排列計算
重複組合計算
重複組合計算
亂數產生器
亂數產生器
平均與統計計算工具
平均數計算機
平均數計算機
眾數中位數計算
眾數中位數計算
標準差計算機
標準差計算機
四分位數計算機
四分位數計算機
次數分配表
次數分配表
相關係數計算機
相關係數計算機
常態分布機率
常態分布機率
z 分數計算機
z 分數計算機
信賴區間計算機
信賴區間計算機
樣本數計算機
樣本數計算機
捉放法與抽樣調查
捉放法與抽樣調查
p 值計算機
p 值計算機
比例與百分比計算工具
百分比計算機
百分比計算機
增減率計算機
增減率計算機
百分比差異
百分比差異
百分誤差計算機
百分誤差計算機
比例計算機
比例計算機
打折計算機
打折計算機
營業稅計算機
營業稅計算機
毛利率計算機
毛利率計算機
速度計算工具
速率計算機
速率計算機
密度與濃度計算工具
密度計算機
密度計算機
莫耳濃度計算機
莫耳濃度計算機
分子量/莫耳質量
分子量/莫耳質量
物理與電學計算工具
歐姆定律計算
歐姆定律計算
瓦數↔安培換算
瓦數↔安培換算
電阻色碼計算
電阻色碼計算
電壓降計算
電壓降計算
單位換算計算工具
坪↔平方公尺換算
坪↔平方公尺換算
重量單位換算
重量單位換算
鞋碼換算
鞋碼換算
整數與正負數計算工具
除法直式計算
除法直式計算
最小公倍數計算
最小公倍數計算
最大公因數計算
最大公因數計算
正負數計算機
正負數計算機
質因數分解
質因數分解
一次不定方程式
一次不定方程式
同餘與餘數計算
同餘與餘數計算
因數計算機
因數計算機
羅馬數字轉換
羅馬數字轉換
分數、小數與四捨五入計算工具
分數計算機
分數計算機
帶分數計算機
帶分數計算機
約分計算機
約分計算機
分數換小數
分數換小數
小數換分數
小數換分數
四捨五入計算機
四捨五入計算機
方程式與不等式計算工具
一元一次方程式
一元一次方程式
聯立方程式
聯立方程式
一元二次方程式
一元二次方程式
絕對值方程式
絕對值方程式
一元二次不等式
一元二次不等式
多項式與乘法展開計算工具
二項式定理
二項式定理
平方根與 n 次方根計算工具
根號化簡
根號化簡
開根號計算
開根號計算
指數與對數計算工具
次方計算機
次方計算機
對數計算機
對數計算機
常用對數與位數
常用對數與位數
科學記號換算
科學記號換算
科學記號運算
科學記號運算
半衰期計算機
半衰期計算機
複數計算工具
複數計算機
複數計算機
複數極式轉換
複數極式轉換
棣美弗定理
棣美弗定理
函數與圖形計算工具
直線斜率計算
直線斜率計算
一次函數計算機
一次函數計算機
正比反比計算機
正比反比計算機
二次函數 y=ax²
二次函數 y=ax²
兩點距離公式
兩點距離公式
空間兩點距離
空間兩點距離
內分點與外分點
內分點與外分點
點到直線的距離
點到直線的距離
經緯度距離計算
經緯度距離計算
配方法計算機
配方法計算機
圓方程式計算機
圓方程式計算機
圓錐曲線計算機
圓錐曲線計算機
極坐標轉換
極坐標轉換
數列計算工具
等差數列計算
等差數列計算
等比數列計算
等比數列計算
費氏數列計算
費氏數列計算
遞迴關係式計算
遞迴關係式計算
向量計算工具
向量計算機
向量計算機
向量外積計算
向量外積計算
矩陣計算工具
矩陣計算機
矩陣計算機
行列式計算機
行列式計算機
反矩陣計算
反矩陣計算
平面圖形計算工具
sin cos tan 計算
sin cos tan 計算
度與弧度換算
度與弧度換算
三角函數疊合
三角函數疊合
三角形計算機
三角形計算機
三角形面積計算
三角形面積計算
直角三角形計算
直角三角形計算
畢氏定理計算
畢氏定理計算
多邊形內角外角
多邊形內角外角
相似比與面積比
相似比與面積比
平行線與角
平行線與角
長方形面積
長方形面積
平行四邊形面積
平行四邊形面積
梯形面積
梯形面積
圓的計算
圓的計算
扇形面積
扇形面積
圓周角定理
圓周角定理
橢圓面積
橢圓面積
立體圖形計算工具
正方體體積
正方體體積
正方體表面積
正方體表面積
長方體體積
長方體體積
長方體表面積
長方體表面積
圓柱體積
圓柱體積
圓柱表面積
圓柱表面積
球的體積
球的體積
球的表面積
球的表面積
球冠的體積
球冠的體積
球冠的表面積
球冠的表面積
橢球的體積
橢球的體積
橢球的表面積
橢球的表面積
四角錐體積
四角錐體積
四角錐表面積
四角錐表面積
圓錐體積
圓錐體積
圓錐表面積
圓錐表面積
圓錐台體積
圓錐台體積
圓錐台表面積
圓錐台表面積
圓管體積
圓管體積
膠囊形體積
膠囊形體積
膠囊表面積
膠囊表面積
日期與時間計算工具
年齡計算
年齡計算
天數計算
天數計算
幾天後的日期
幾天後的日期
幾小時後的日期時間
幾小時後的日期時間
星期幾查詢
星期幾查詢
時間加減計算機
時間加減計算機
時差計算機
時差計算機
工時計算機
工時計算機
時間差計算機
時間差計算機
打卡工時計算
打卡工時計算
金融與經濟計算工具
複利計算
複利計算
單利計算
單利計算
利息計算
利息計算
財務計算機 TVM
財務計算機 TVM
現值計算
現值計算
未來值計算
未來值計算
ROI 計算機
ROI 計算機
IRR 計算機
IRR 計算機
回收期間計算
回收期間計算
平均報酬率計算
平均報酬率計算
GDP 計算機
GDP 計算機
網路行銷與廣告指標計算工具
CTR 點擊率計算
CTR 點擊率計算
CVR 轉換率計算
CVR 轉換率計算
CPC、CPM、CPA 計算
CPC、CPM、CPA 計算
ROAS 計算
ROAS 計算
損益平衡 CPA
損益平衡 CPA
LTV 顧客終身價值
LTV 顧客終身價值
CAC 顧客取得成本
CAC 顧客取得成本
流失率計算
流失率計算
A/B 測試顯著性
A/B 測試顯著性
A/B 測試樣本數
A/B 測試樣本數
SEO 流量預估
SEO 流量預估
損益平衡點計算
損益平衡點計算
成本率毛利率換算
成本率毛利率換算
CAGR 計算機
CAGR 計算機
健康與健身計算工具
BMI 計算機
BMI 計算機
睡眠週期計算
睡眠週期計算
熱量計算機
熱量計算機
BMR 計算機
BMR 計算機
TDEE 計算機
TDEE 計算機
理想體重計算機
理想體重計算機
體脂率計算機
體脂率計算機
去脂體重計算機
去脂體重計算機
消耗熱量計算機
消耗熱量計算機
蛋白質計算機
蛋白質計算機
三大營養素計算
三大營養素計算
碳水攝取量計算
碳水攝取量計算
脂肪攝取量計算
脂肪攝取量計算
孩子身高預測
孩子身高預測
運動計算工具
高爾夫差點計算
高爾夫差點計算
配速計算機
配速計算機
1RM 計算機
1RM 計算機
目標心跳率計算
目標心跳率計算
氣象計算工具
體感溫度計算
體感溫度計算
風寒效應計算
風寒效應計算
露點溫度計算
露點溫度計算
電腦計算工具
進位轉換
進位轉換
子網路計算機
子網路計算機
下載時間計算
下載時間計算
家計與水電瓦斯費計算工具
家電電費計算
家電電費計算
度數算電費/反推
度數算電費/反推
年耗電量算電費
年耗電量算電費
冷氣坪數計算
冷氣坪數計算
冷氣電費計算
冷氣電費計算
暖氣電費比較
暖氣電費比較
瓦斯與電費比較
瓦斯與電費比較
換 LED 省多少
換 LED 省多少
薪資換算
薪資換算
家庭收支計算
家庭收支計算
汽車計算工具
油錢計算
油錢計算
電動車充電費用
電動車充電費用
電動車 vs 油車
電動車 vs 油車
油耗計算
油耗計算
輪胎尺寸計算
輪胎尺寸計算
太陽能發電與儲能計算工具
太陽能發電量
太陽能發電量
太陽能板片數
太陽能板片數
太陽能回本年限
太陽能回本年限
儲能電池容量試算
儲能電池容量試算
居家與 DIY計算工具
磁磚數量計算
磁磚數量計算
樓梯尺寸計算
樓梯尺寸計算
混凝土用量計算
混凝土用量計算
房間牆面積計算
房間牆面積計算
壁紙用量計算
壁紙用量計算
油漆用量計算
油漆用量計算
木地板片數計算
木地板片數計算
外牆面積計算
外牆面積計算
碎石用量計算
碎石用量計算
水泥砂漿配比
水泥砂漿配比
坡度計算
坡度計算
木材裁切計算
木材裁切計算
建蔽率、容積率
建蔽率、容積率
地板捲材用量
地板捲材用量
隔熱材用量計算
隔熱材用量計算
窗簾尺寸計算
窗簾尺寸計算
電視尺寸與距離
電視尺寸與距離
培養土用量計算
培養土用量計算
草皮用量計算
草皮用量計算
空心磚數量計算
空心磚數量計算
紅磚數量計算
紅磚數量計算
木棧板材料計算
木棧板材料計算
坡道長度計算
坡道長度計算
螺絲導孔與長度
螺絲導孔與長度
換氣量計算
換氣量計算
油漆稀釋計算
油漆稀釋計算
踢腳板長度計算
踢腳板長度計算
百葉窗捲簾尺寸
百葉窗捲簾尺寸
掛畫高度與位置
掛畫高度與位置
排水坡度與高低差
排水坡度與高低差
螺絲數量計算
螺絲數量計算
木材才數計算
木材才數計算
圍籬材料計算
圍籬材料計算
木材收縮計算
木材收縮計算
矽利康用量計算
矽利康用量計算
房間熱損失計算
房間熱損失計算
家具搬入計算
家具搬入計算
搬家紙箱數量
搬家紙箱數量
收納容量計算
收納容量計算
板材裁切計算
板材裁切計算
層板承重計算
層板承重計算

同餘與餘數計算機(a mod n、同餘判定、次方的餘數)

請選擇模式並輸入整數。「求餘數」也支援負數,還會顯示數學上的餘數(大於或等於 0)和程式的 % 運算子有什麼不同。

請以半形數字輸入整數(不能用小數或分數)。a、b、n 在 30 位數以內,指數 k 大於或等於 0 且在 9 位數以內,模 n 大於或等於 1。
計算結果與圖形
在左邊選擇模式、輸入整數,按下「計算」,結果就會顯示在這裡(模 n 為 2~24 時,還會出現標示餘數位置的時鐘圖)。

這個頁面可以做什麼

  • 可以求整數 \(a\) 除以 \(n\) 的餘數。也支援負數(例如:\(-7\) 除以 \(3\) 的餘數),並排顯示數學上的餘數(\(0 \le r < n\)),以及 C、Java、JavaScript 等語言的 % 運算子結果(可能是負數)
  • 可以判定同餘式 \(a \equiv b \pmod{n}\) 是否成立,並附上「差 \(a - b\) 是不是 \(n\) 的倍數」這個理由
  • 像 \(7^{100}\) 除以 \(13\) 的餘數這種大次方的餘數,也能附反覆平方法的計算過程精確算出(計算機位數不夠的數也能直接計算)
  • 可以用時鐘圖(mod \(n\) 的圓環)看出餘數的變化,掌握「餘數會在同樣的位置繞圈圈」的感覺(模 \(n\) 為 2~24 時會顯示時鐘圖)
  • 公式的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 的公式,也都整理在這個頁面
模 \(n\) 是大於或等於 1 的整數。\(a\)、\(b\)、\(n\) 請在 30 位數以內,指數 \(k\) 請輸入大於或等於 0、9 位數以內的整數。

這個計算有什麼用?

時鐘、月曆的計算(幾天後是星期幾?)

時鐘的「14 點=下午 2 點」,就是 14 mod 12 = 2 的餘數計算。星期也和「每 7 繞一圈的時鐘」是同樣的道理,例如今天是星期一,100 天後是 100 mod 7 = 2,所以是「星期一往後 2 天=星期三」。
不論是記事本上的月曆還是月曆 App,都是用這個餘數的計算來對應日期和星期。

抓出號碼錯誤的檢查碼(條碼、ISBN)

商品條碼(台灣以 471 開頭的 EAN-13 條碼)和書籍 ISBN 的最後 1 碼,是由前面的數字用餘數計算產生的檢查用數字(檢查碼)。例如 EAN-13 條碼,是把各位數字交替乘以 1 倍、3 倍後相加,再由總和除以 10 的餘數決定最後一碼。
只要打錯 1 碼,餘數就對不上,所以收銀機和網購系統能當場抓出輸入錯誤。信用卡號碼和身分證字號最後一碼的檢查碼,也是同樣的想法。

保護網路的加密(RSA 加密)

用來安全傳送信用卡號碼等資料的公鑰加密代表——RSA 加密,計算時用的正是「巨大數的次方除以某數的餘數」。次方的餘數可以很快算出來,但要從結果反推回原來的數卻非常困難,這種單向的性質就是安全性的根據。
這個頁面「求次方的餘數」模式顯示計算過程所用的反覆平方法,正是加密軟體每天在內部執行的計算。

程式設計的基本功(判定偶數奇數、讓順序循環)

程式設計中,常用 i % 2 判定偶數或奇數,或用 i % n 做出「每 n 個繞一圈的順序」(例如回合制遊戲中決定下一位玩家、投影片播到最後再回到第一張等),% 運算子是日常使用的工具。
摻雜負數時,% 的結果依語言而不同,所以「數學上的餘數和 C、Java 系 % 的差異」,是除錯時很有用的知識。

平分後計算剩下多少(分配、裝箱)

63 枝鉛筆平均分給 12 個人,每人 5 枝,還剩 3 枝(63 = 12 × 5 + 3)。庫存裝箱(每箱 n 個,能裝幾箱、剩幾個)、活動分組等,「平分後看剩下多少」的場合,用的都是這個計算。
除法的基本式 a = n × q + r,就是把這些生活中的場景寫成一個式子。

公式與圖示

除法的基本式(餘數的定義)
時鐘圖(mod 12)
數學寫法 (一般的數學式)
\(a\) \(=\) \(n\) \(\times\) \(q\) \(+\) \(r\)
文字寫法 (把符號換成文字的公式)
④ \(a\):被除數 \(=\) ① \(n\):除數(模) \(\times\) ② \(q\):商 \(+\) ③ \(r\):餘數
用文字讀公式
① \(n\):除數(模) 乘以
② \(q\):商 ,再加上
③ \(r\):餘數(取 \(0 \le r < n\)) ,就會回到
④ \(a\):被除數 。寫成這個形式的方法只有一種,其中的 \(r\) 就是「\(a\) 除以 \(n\) 的餘數(\(a \bmod n\))」
簡單範例
38 除以 12(和時鐘上「38 點」就是 2 點的計算相同)
被除數 38 \(=\) 除數 12 \(\times\) 商 3 \(+\) 餘數 2
\(38 = 12 \times 3 + 2\)
\(38 \bmod 12 = 2\)
思考重點
數學上約定餘數 \(r\) 要取在「\(0 \le r < n\)」的範圍內。負數也一樣,\(-7\) 除以 \(3\) 時,要像 \(-7 = 3 \times (-3) + 2\) 這樣,把商降到較小的整數(\(-3\)),讓餘數變成 \(2\)(向下取整除法)。 另一方面,程式的 % 運算子依語言而有不同的做法。C、Java、JavaScript 的 -7 % 3,會把商往接近 0 的方向(\(-2\))捨去,所以結果是 \(-1\)(餘數的正負號和被除數相同的方式)。Python、Ruby 的 % 和 Excel 的 MOD 函數,採用餘數的正負號和除數相同的方式,所以會傳回和數學相同的 \(2\)。處理負數餘數的程式,這個差異常常直接造成錯誤(bug),請特別注意。
同餘式的定義(a ≡ b (mod n) 是什麼意思)
數學寫法 (一般的數學式)
\(a - b\) \(=\) \(n\) \(\times\) \(m\)
文字寫法 (把符號換成文字的公式)
③ \(a - b\):兩個整數的差 \(=\) ① \(n\):模 \(\times\) ② \(m\):某個整數
用文字讀公式
① \(n\):模 乘以
② \(m\):某個整數 所得的積,如果剛好等於
③ \(a - b\):兩個整數的差 (=差是 \(n\) 的倍數),就寫成 \(a \equiv b \pmod{n}\),稱為「\(a\) 與 \(b\) 以 \(n\) 為模同餘」
簡單範例
38 與 14 以 12 為模同餘(\(38 \equiv 14 \pmod{12}\))
差(38 − 14 = 24) \(=\) 模 12 \(\times\) 整數 2
\(38 - 14 = 24 = 12 \times 2\)
\(38 \equiv 14 \pmod{12}\)
思考重點
「差是 \(n\) 的倍數」和「除以 \(n\) 的餘數相等」是同一件事的不同說法(實際上 \(38 \bmod 12 = 2\)、\(14 \bmod 12 = 2\),餘數相同)。所以同餘式可以看成「只看餘數的等式」。 想像一下時鐘,38 點、14 點和 2 點,在鐘面上都指向同一個位置。mod \(n\) 的世界就是「每 \(n\) 繞一圈的時鐘」,同餘的數就是在時鐘上同一個位置的數。
乘法與餘數的關係(次方餘數的基礎)
數學寫法 (一般的數學式)
\((a \times b) \bmod n\) \(=\) \(\{(a \bmod n) \times (b \bmod n)\} \bmod n\)
文字寫法 (把符號換成文字的公式)
② 積的餘數 \(=\) ① 各自的餘數相乘後再取的餘數
用文字讀公式
① 各自的餘數相乘後再取的餘數 算出來會和
② 積的餘數 相同(可以先換成餘數再相乘)
簡單範例
38 × 15 除以 12 的餘數,只用各自的餘數 2 和 3 就能求出
積(38 × 15 = 570)的餘數 \(=\) 餘數 2 × 餘數 3 = 6
\(38 \bmod 12 = 2,\quad 15 \bmod 12 = 3\)
\(2 \times 3 = 6\)
\((38 \times 15) \bmod 12 = 570 \bmod 12 = 6\)
思考重點
有了這個性質,大數的乘法不必算到最後,可以先換成餘數再相乘。次方就是一再相乘,所以像 \(7^{100}\) 這麼巨大的數,不必真的算出來,只要追蹤餘數就能計算。這就是反覆平方法(每平方一次就取餘數,再把指數分解成 2 的次方之和來相乘的方法)的基礎,這個計算機的「求次方的餘數」模式,也是用這個方法顯示計算過程。 此外,次方的餘數只有 \(n\) 種,所以一定會在某處回到相同的餘數,呈週期性重複。例如 \(7^{k}\) 的個位數字(mod \(10\) 的餘數),會依序在 7、9、3、1 這 4 個數之間繞圈圈。找出這個週期的解法,在考試中也是常見的題型。
同餘式的性質(兩式相加、相減、相乘)
數學寫法 (一般的數學式)
\(a + c\) \(\equiv\) \(b + d\) \(\pmod{n}\)
\(a - c\) \(\equiv\) \(b - d\) \(\pmod{n}\)
\(a \times c\) \(\equiv\) \(b \times d\) \(\pmod{n}\)
文字寫法 (把符號換成文字的公式)
① \(a + c\):左邊相加 \(\equiv\) ② \(b + d\):右邊相加 \(\pmod{n}\)
\(a - c\):左邊相減 \(\equiv\) \(b - d\):右邊相減 \(\pmod{n}\)
\(a \times c\):左邊相乘 \(\equiv\) \(b \times d\):右邊相乘 \(\pmod{n}\)
用文字讀公式
① 當 \(a \equiv b\)、\(c \equiv d \pmod{n}\) 時, 左邊相加、相減、相乘的結果 和
② 右邊相加、相減、相乘的結果 分別仍然同餘(同餘式可以像一般的等式一樣相加、相減、相乘)
簡單範例
利用 \(38 \equiv 2\)、\(15 \equiv 3 \pmod{12}\)
38 + 15 = 53 \(\equiv\) 2 + 3 = 5 \(\pmod{12}\)
\(38 + 15 = 53 \equiv 5,\quad 2 + 3 = 5 \pmod{12}\)
\(38 \times 15 = 570 \equiv 6,\quad 2 \times 3 = 6 \pmod{12}\)
思考重點
即使是大數的計算,也能先換成餘數再相加、相減、相乘,這就是這個性質方便的地方。 不過,只有除法不能隨意做。例如 \(6 \equiv 12 \pmod{6}\) 成立,但兩邊同除以 2 得到的 \(3 \equiv 6 \pmod{6}\) 並不成立(差 3 不是 6 的倍數)。只有當除數和模互質(最大公因數是 1)時,兩邊才可以同除。
整數 \(a\) 除以 \(n\) 的餘數,就是寫成 \(a = n \times q + r\)(\(0 \le r < n\))這個唯一形式時的 \(r\)。同餘式 \(a \equiv b \pmod{n}\) 的意思是「\(a\) 和 \(b\) 的差是 \(n\) 的倍數(=除以 \(n\) 的餘數相等)」,可以像等式一樣相加、相減、相乘。有了這個性質,大次方的餘數也能用只追蹤餘數的反覆平方法很快求出來。

符號與用語解說

符號

\(\equiv\) 同餘 表示同餘的符號。把等號(=)的線變成 3 條的形狀,表示比「完全相等」寬鬆的「在餘數的世界裡相等」。
\(\bmod\)(mod) mod 表示模的符號,是英文 modulus(模)的縮寫,據說來自拉丁文的 modulus(尺度)。「\(a \bmod n\)」表示「\(a\) 除以 \(n\) 的餘數」,寫在式子後面的「\(\pmod{n}\)」則是宣告「以 \(n\) 為模來思考」。
\(a,\ b\) 要求餘數的整數,在同餘式中是左右兩邊的 2 個整數。表示「已知的數」時,習慣用字母表前面的字母。
\(n\) 模(決定用除以多少的餘數來思考的數)。常用 number(數)的第一個字母 \(n\)。這個頁面中是大於或等於 1 的整數。
\(q\) 商,取自 quotient(商)的第一個字母。負數的除法中,為了讓餘數大於或等於 0,商要往較小的整數取(向下取整除法)。
\(r\) 餘數,取自 remainder(餘數)的第一個字母。數學上約定取在 \(0 \le r < n\) 的範圍內。
\(m\) 出現在同餘式定義中、表示「差是模的幾倍」的整數,也可能是負整數或 0。
\(a^{k}\) a 的 k 次方 把 \(a\) 自乘 \(k\) 次(次方)。右上角的小數字 \(k\) 是表示「相乘次數」的指數。
% 百分比符號(當作取餘數運算子時讀作 mod) 許多程式語言中用來求餘數的取餘數運算子。和百分率的百分比符號相同,但意思不同。C、Java、JavaScript 對負數的結果,可能和數學上的餘數不同(請參考第 1 個公式的「思考重點」)。

用語

餘數 除法中除不盡而剩下的數。數學上約定取大於或等於 \(0\)、小於除數的值。
商 相當於除法中「可以減幾次」的整數,也就是除法基本式 \(a = n \times q + r\) 的 \(q\)。
模 決定「用除以多少的餘數來思考」的數 \(n\),相當於時鐘繞一圈的刻度數。「以 12 為模」的意思是「用除以 12 的餘數來思考」。
同餘 2 個整數除以模 \(n\) 的餘數相等。這是整數性質的用語,和圖形的全等(形狀和大小都相同)不同。
同餘式 \(a \equiv b \pmod{n}\) 形式的式子。可以像等式一樣相加、相減、相乘來變形,用式子的變形來進行餘數的計算。是數論的基本工具,也常出現在數學競賽中。
倍數 把某個整數乘以整數所得的數。「差是模的倍數」就是同餘的定義。
向下取整除法 把商往較小的整數取的除法(floor division)。除數是正數時,即使被除數是負數,餘數也會大於或等於 0。Python 的 // 運算子和 Excel 的 INT 函數都是這種方式。
取餘數運算子 程式設計中求餘數的 %。C、Java、JavaScript 是把商往 0 的方向捨去的方式(餘數的正負號和被除數相同),Python、Ruby 是向下取整除法的方式(餘數的正負號和除數相同,模是正數時大於或等於 0)。
反覆平方法 一再平方並取餘數,再把指數分解成 2 的次方之和來相乘,用很少的乘法次數求出大次方餘數的方法。也叫快速冪,用在 RSA 加密等的實作中。
同餘類 把整數依「除以 \(n\) 的餘數」分組的想法。在 mod \(n\) 的世界裡,所有整數都分成餘數 \(0\)~\(n-1\) 這 \(n\) 類。偶數和奇數,就是依除以 2 的餘數分成的同餘類。
週期性 次方的餘數會重複同樣排列的性質。餘數只有 \(n\) 種,所以一定會在某處回到相同的餘數。在個位數字的問題(mod 10)中找出週期,是考試的常見題型。
互質 2 個整數的最大公因數是 1。出現在同餘式兩邊可以同除以某數的條件中。

建議先了解的基礎知識

為了能「真正理解意義」地使用這個頁面的計算,這裡整理了建議事先了解的基礎知識。
遇到卡關的地方,回到這張表的內容複習是最快的捷徑。

有餘數的除法(國小三~四年級,8~10 歲)
  • 能算出 \(17 \div 5 = 3 \cdots 2\) 這種形式的計算
  • 能用「除數 × 商 + 餘數 = 被除數」來驗算
倍數與因數(國小五年級,10~11 歲)
  • 知道 \(24\) 是 \(12\) 的倍數
  • 知道最大公因數的意思(會用在同餘式除法的條件「互質」)
正負數(國中七年級,12~13 歲)
  • 能做含有負數的加法、減法、乘法(例如:\(3 \times (-3) = -9\))
  • 知道在數線上 \(-3\) 比 \(-2\) 小(在左邊)
次方與指數(國中七年級~高一,12~16 歲)
  • 知道像 \(3^{4} = 3 \times 3 \times 3 \times 3 = 81\) 這樣,右上角的指數表示「相乘的次數」
  • 會用指數律 \(a^{m} \times a^{n} = a^{m+n}\)、\((a^{m})^{n} = a^{mn}\)(這是反覆平方法的根據)
整數的除法原理(高中,15~18 歲)
  • 知道整數 \(a\) 除以正整數 \(n\) 時,可以唯一地寫成 \(a = nq + r\)(\(0 \le r < n\))的形式
  • 接觸過「依餘數把整數分類」的想法(偶數和奇數,就是依除以 2 的餘數分成的同餘類)

用 Excel 計算的方法

把下方表格整個複製,貼到 Excel 的 A1 儲存格就能直接使用。
求「a mod n(餘數)」的表格
被除數 a -7
模(除數)n 3
數學上的餘數(大於或等於 0) =MOD(B1,B2)
商(向下取整除法) =INT(B1/B2)
驗算 n×商+餘數 =B2*B4+B3
C、Java 方式的餘數(往 0 方向捨去) =B1-B2*TRUNC(B1/B2)
「同餘判定 a ≡ b (mod n)」的表格
整數 a 38
整數 b 14
模 n 12
差 a−b =B1-B2
差除以 n 的餘數 =MOD(B4,B3)
判定(TRUE 表示同餘) =MOD(B4,B3)=0
求「次方的餘數(反覆平方法)」的表格
底數 a 7
指數 k 100
模 n 13
a 的 1 次方的餘數 =MOD(B1,B3)
a 的 2 次方的餘數(把上一列平方後取餘數) =MOD(B4^2,$B$3)
a 的 4 次方的餘數 =MOD(B5^2,$B$3)
a 的 8 次方的餘數 =MOD(B6^2,$B$3)
a 的 16 次方的餘數 =MOD(B7^2,$B$3)
a 的 32 次方的餘數 =MOD(B8^2,$B$3)
a 的 64 次方的餘數 =MOD(B9^2,$B$3)
組合 100=64+32+4 的餘數 =MOD(MOD(B10*B9,$B$3)*B6,$B$3)
貼上之後,只要改掉上面幾列(輸入),下面幾列就會自動計算。
Excel 的 MOD 函數會傳回和這個計算機相同的「數學上的餘數」(大於或等於 0)。即使是負數,=MOD(-7,3) 也是 2。想知道 C、Java 方式的餘數時,請用第 1 個表格最後一列、把商往 0 方向捨去的 TRUNC。
第 1 個表格是 −7 除以 3 的例子,餘數是 2、商是 −3。
第 2 個表格是 38 ≡ 14 (mod 12) 的判定,差 24 的餘數是 0,所以顯示 TRUE(同餘)。
第 3 個表格是用反覆平方法求 7 的 100 次方除以 13 的餘數,答案是 9。「^」是次方的符號。Excel 的數值只能精確處理約 15 位數,所以模 n 超過 7 位數時,平方後的值會失去精確度。這時請使用這個頁面的計算機或 Python。

用 Google 試算表計算的方法

把下方表格整個複製,貼到 Google 試算表的 A1 儲存格就能直接使用。
求「a mod n(餘數)」的表格
被除數 a -7
模(除數)n 3
數學上的餘數(大於或等於 0) =MOD(B1,B2)
商(向下取整除法) =INT(B1/B2)
驗算 n×商+餘數 =B2*B4+B3
C、Java 方式的餘數(往 0 方向捨去) =B1-B2*TRUNC(B1/B2)
「同餘判定 a ≡ b (mod n)」的表格
整數 a 38
整數 b 14
模 n 12
差 a−b =B1-B2
差除以 n 的餘數 =MOD(B4,B3)
判定(TRUE 表示同餘) =MOD(B4,B3)=0
求「次方的餘數(反覆平方法)」的表格
底數 a 7
指數 k 100
模 n 13
a 的 1 次方的餘數 =MOD(B1,B3)
a 的 2 次方的餘數(把上一列平方後取餘數) =MOD(B4^2,$B$3)
a 的 4 次方的餘數 =MOD(B5^2,$B$3)
a 的 8 次方的餘數 =MOD(B6^2,$B$3)
a 的 16 次方的餘數 =MOD(B7^2,$B$3)
a 的 32 次方的餘數 =MOD(B8^2,$B$3)
a 的 64 次方的餘數 =MOD(B9^2,$B$3)
組合 100=64+32+4 的餘數 =MOD(MOD(B10*B9,$B$3)*B6,$B$3)
和 Excel 相同的公式(MOD、INT、TRUNC)可以直接使用。把整個表格複製後貼到 A1 儲存格,再把輸入改成您自己的數值即可。

用 Python 計算的方法

a = -7
n = 3

# Python 的 % 會傳回和這個計算機相同的「數學上的餘數」(模為正數時大於或等於 0)
print(a % n)                 # 2

# divmod 會一起傳回向下取整除法的商和餘數(a = n × 商 + 餘數)
quotient, remainder = divmod(a, n)
print(quotient, remainder)   # -3 2

# 同餘判定:38 ≡ 14 (mod 12) 是否成立(看差是不是 12 的倍數)
print((38 - 14) % 12 == 0)   # True

# 次方的餘數:7 的 100 次方除以 13 的餘數
# pow 的 3 個引數版本用反覆平方法計算,即使指數很大也能瞬間算完
print(pow(7, 100, 13))       # 9

def c_style_mod(x, m):
    # 和 C、Java、JavaScript 的 % 結果相同(把商往 0 方向捨去的方式)
    r = x % m
    if r != 0 and x < 0:
        r -= m
    return r

print(c_style_mod(-7, 3))    # -1
Python 的 % 運算子和數學上的餘數相同,除數是正數時,即使是負數也會傳回大於或等於 0 的值(-7 % 3 是 2)。次方的餘數使用 pow(底數,指數,模)的 3 個引數版本,內部會運作反覆平方法,即使是好幾萬位數的次方,也能只快速算出餘數。需要和 C、Java、JavaScript 的 % 相同的結果時,就像最後的函式一樣,加上把商往 0 方向捨去的修正。

用 LaTeX 等數學式語言的寫法(可直接複製)

除法的基本式(餘數的定義)
a = n × q + r(0 ≤ r < n)
a = nq + r \quad (0 \le r < n)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>a</mi><mo>=</mo><mi>n</mi><mi>q</mi><mo>+</mo><mi>r</mi>
    <mo>,</mo>
    <mn>0</mn><mo>&#x2264;</mo><mi>r</mi><mo>&lt;</mo><mi>n</mi>
  </mrow>
</math>
a = n q + r, \ 0 <= r < n
{Quotient[a, n], Mod[a, n]}
q := floor(a/n); r := a mod n;
q = floor(a/n); r = mod(a, n);
a = nq + r (0 ≤ r < n)
同餘式的定義(a ≡ b (mod n) 是什麼意思)
a ≡ b (mod n)  ⇔  a − b = n × m
a \equiv b \pmod{n} \iff a - b = nm
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>a</mi><mo>&#x2261;</mo><mi>b</mi>
    <mspace width="0.3em"/>
    <mo>(</mo><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
    <mo>&#x21D4;</mo>
    <mi>a</mi><mo>&#x2212;</mo><mi>b</mi><mo>=</mo><mi>n</mi><mi>m</mi>
  </mrow>
</math>
a -= b (mod n) iff a - b = n m
Mod[a - b, n] == 0
(a - b) mod n = 0;
mod(a - b, n) == 0
a ≡ b (mod n)
乘法與餘數的關係(次方餘數的基礎)
(a × b) mod n = {(a mod n) × (b mod n)} mod n
(a \times b) \bmod n = \{(a \bmod n)(b \bmod n)\} \bmod n
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mo>(</mo><mi>a</mi><mo>&#xD7;</mo><mi>b</mi><mo>)</mo>
    <mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi>
    <mo>=</mo>
    <mo>{</mo>
    <mo>(</mo><mi>a</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
    <mo>&#xD7;</mo>
    <mo>(</mo><mi>b</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
    <mo>}</mo>
    <mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi>
  </mrow>
</math>
(a * b) mod n = ((a mod n) * (b mod n)) mod n
Mod[a b, n] == Mod[Mod[a, n] Mod[b, n], n]
(a * b) mod n = ((a mod n) * (b mod n)) mod n;
mod(a*b, n) == mod(mod(a, n)*mod(b, n), n)
(a×b) mod n = ((a mod n)×(b mod n)) mod n
同餘式的性質(兩式相加、相減、相乘)
a ≡ b, c ≡ d (mod n) ⇒ a+c ≡ b+d, a−c ≡ b−d, a×c ≡ b×d (mod n)
a \equiv b,\ c \equiv d \pmod{n} \Rightarrow a + c \equiv b + d,\ a - c \equiv b - d,\ ac \equiv bd \pmod{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>a</mi><mo>+</mo><mi>c</mi><mo>&#x2261;</mo><mi>b</mi><mo>+</mo><mi>d</mi>
    <mo>,</mo>
    <mi>a</mi><mo>&#x2212;</mo><mi>c</mi><mo>&#x2261;</mo><mi>b</mi><mo>&#x2212;</mo><mi>d</mi>
    <mo>,</mo>
    <mi>a</mi><mi>c</mi><mo>&#x2261;</mo><mi>b</mi><mi>d</mi>
    <mspace width="0.3em"/>
    <mo>(</mo><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
  </mrow>
</math>
a + c -= b + d, \ a - c -= b - d, \ a c -= b d (mod n)
Mod[a + c, n] == Mod[b + d, n] && Mod[a - c, n] == Mod[b - d, n] && Mod[a c, n] == Mod[b d, n]
(a + c) mod n = (b + d) mod n;
mod(a + c, n) == mod(b + d, n)
a + c ≡ b + d (mod n)

請 ChatGPT  幫忙計算的方法

你是數學(整數的性質)計算助理。請務必實際執行 Python 程式碼來進行下面的計算,並只以執行結果的數值作為回答的依據(不要用心算或推測回答)。

請計算下列 3 題:
1. −7 除以 3 的數學上的餘數(取大於或等於 0 的值),以及這時的商
2. 38 ≡ 14 (mod 12) 是否成立(也要說明差是不是 12 的倍數)
3. 7 的 100 次方除以 13 的餘數(使用 pow(7, 100, 13))

請用 Python 的 %、divmod、pow(底數,指數,模)計算,並列出計算所用的公式和執行結果的數值。

使用方法
  1. 1
    輸入數值
    在輸入欄中輸入要計算的數值
  2. 2
    計算
    按下「計算」按鈕
  3. 3
    查看結果
    計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
  DataChef 的特色
簡單又免費
免費且無使用次數限制
不需專業知識,操作直覺又簡單
免註冊會員
開啟頁面即可立即使用
無須登錄任何個人資料
安全又安心
通訊全程高度加密
按下「下載」後自動刪除檔案
高速
顯示與轉換都快速順暢,毫無等待壓力
無浮水印
沒有浮水印
無須標註來源出處
可商業使用
可免費用於商業用途
亦無須事先取得商用授權