热门问题
时间线
聊天
视角
除法
運算 来自维基百科,自由的百科全书
Remove ads
除法(英語、法語:division)是四則運算之一。除法運算的本質,就是「把參與運算的除數變為,得出同比的被除數的值」。

例如:,就好像, ,被減了兩次後,就變成了。
如果
其中,a稱為商數,b稱為除數,c稱為被除數。
如果除式的商數()必須是整數,則稱為帶餘除法,與相差的數值,稱為餘數()。
這也意味著
在高等數學、科學、工程學和計算機程式語言中,寫成。如果我們毋需知曉確切值,或者留待以後引用,這種形式也常稱之為分數的最終形式。其中尋找商數的函數為,尋找餘數(即模除)的函數則為。
在代數結構範疇中,除法運算存在兩種基本形式,對應不同的數學結構定義:
Remove ads
引言
首先,進入正題前,我們不妨來看兩個生活中的例子:
- 將500克糖果均分給8人:由可得,每人獲得62.5克糖果(無餘除法)
- 500克奶粉,按70克/份分配:由可得,可完整分配7份,餘量≈0.14份(帶餘除法)
其次,數學和物理存在許多「比例關係反演」:
- 可構造逆函數近似解:;;
- 此乃牛頓迭代法求根的理論基礎:。
Remove ads
定義
首先,我們來定義整數間的帶餘除法。這一運算的核心,是將被除數表示為「除數的整數倍+餘數」的形式,且餘數需滿足特定條件。
具體而言,對於任意整數 和非零整數 ,存在唯一的整數 (商)和 (餘數),使得:
- 且
其中,餘數 的非負性及小於除數絕對值的性質確保了分解的唯一性。
該定義是數論中整除、同餘等概念的基礎,並廣泛用於模運算、輾轉相除法等算法中。
帶餘除法的概念,已能凸顯除零問題的本質:如何將一個量分成0份?顯然,這沒有實際意義。
隨後,我們引入十進制數的概念,並通過遞迴處理餘數的方式擴展計算過程,由此便有了有理數的定義體系。至於實數,則在有理數基礎上拓展而成。
此時可以設想,將整體劃分為更小的單位份額,從而實現分數除法:將一個量除以 (即),意味著初始量相當於個單位份額,進而求出完整單位的大小;而將一個量除以負數,則相當於計算需要移除的單位份額規模。
無理數無法直觀理解為具體數量,但可視為一種比——例如正方形對角線與邊長之比,或圓周長與其直徑之比。至此,除法運算不再能單純定義為「劃分」,而應理解為乘法逆運算。
基於此定義,除以零仍無意義。由於零乘任何數都得零(),零便有無窮多個乘法反元素。我們亦可從極限角度理解該問題——因為除以某數等價於乘以其倒數,故可將原問題轉化為函數在零點處極限的操作:當 從左側趨近於零時,極限為,從右側趨近時,則為。
即便通過引入廣義實數集(即在實數軸上添加和這兩個「偽無窮大」)來擴展數系,問題仍未解決,因為極限值的符號不確定性依然存在。由此可見,除法在代數與數分中具有根本性意義。
Remove ads
設 為整環,則 上的除法運算定義為滿足以下條件的二元關係:
- 運算規則:對於任意 , ,若且唯若 (其中 );
- 唯一性:整環的乘法消去律保證除法結果唯一(若 且 ,則 );
- 定義域限制:除法僅在 上有定義,即除數不能為零。
Remove ads
若 A 為交換環,可通過等價關係擴展除法:
- 定義等價關係:,其等價類稱為分數,記為 ;
- 擴展後的集合構成域(含乘法反元素),其中 為加法單位元素, 為乘法單位元素。此即有理數體 的構造基礎。
Remove ads
- 除零禁止:零元素無乘法反元素,故 時除法無定義。
- 與歐幾里得除法的區別:
- 環論中的除法是乘法的逆運算,強調代數結構;
- 歐幾里得除法側重整數間的帶餘除法(如上文的帶餘除法),兩者本質不同。
符號與表示
基礎算術中,除號「÷」仍被廣泛使用,而在代數與科學領域,除法通常用水平橫線(也被稱為分數分劃線)或斜槓表示被除數與除數的關係。除這三種以外,還有其它不同形式。
用除號將被除數和除數相隔開:
但實際上,除了在基礎算術外,這種形式並不常見。ISO 80000-2-10.6標準明確禁止使用該符號,因部分歐洲國家用 ÷ 表示減法,容易產生混淆。[1]
將被除數置於分數線上方,除數置於下方,例如:
該形式可讀作「a除以b」、「b除a」或「a比b」。
在單行文本中,使用斜槓分隔被除數與除數,例如:
另外,有部分數學軟體(如MATLAB、GNU Octave)採用反斜槓表示運算順序反轉的除法:
- (等價於)
還有以上下標斜槓顯示的:
Remove ads
在某些非英語國家,有的用冒號將被除數和除數相隔開:
此用法由奧特雷德於1631年最先引入,自萊布尼茲於1684年提倡以來,才為人廣泛應用。[2]:295 萊布尼茲更喜歡用同一個符號表示除法和比率。而在英語用法中,「:」一般只表示比率。
在大部分非英語語言中,代表的比,讀做c比b;則代表的比值。用法請參照比例。
除了以上這四種形式,美國自19世紀起便開始使用 或 來單獨表示 除以 ,尤常見於長除法中。時至今日,美國仍有零星人口使用這種寫法。[3]
性質
嚴格而言,除法並不構成集合上的內部合成法則(一種二元運算),其所謂「性質」並不構成數集的結構特性,而應理解為分數形式的固有屬性。
- 非交換律:
- 非結合律:
- 右單位元素:對任意數 ,存在 。
- 左零吸收元:當 時, 。
- 分數等式:
- 同分母時:當 時, 。
- 通分等價:當 時, 。
- 順序保持性:當 時,分數 與 的大小關係與原數 和 保持一致。
不同的除法運算
零除以任何非零的數都為零。即在被除數為零,除數非零的前提下,商數為零。
整數集在除法運算下沒有封閉性,這意味著,兩個整數相除,結果不一定是整數。除零操作本身即無定義外,當被除數不是除數的整數倍時,商將呈現為非整數形式。
以26除以11為例,其商即便非整數,但也屬於有理數範疇。此時通常採用以下5種處理策略:
- 將此類除法視為偏函數,即當除法無法得到整數結果時直接判定為無定義。這種處理方式嚴格遵循數學定義,但會限制運算的應用範圍。
- 採用浮點近似法,將結果表示為帶有小數部分的實數。這是數值計算方面的通用做法,例如 該方法通過犧牲精確性來換取運算的普適性,但可能引入捨入誤差。
- 通過分數形式保持精確性,將結果表示為最簡分數或帶分數。這種處理要求分子分母的最大公因數為1,例如經約簡後同樣得到。分數體系通過引入有理數集 ,使整數除法在更廣泛的數系中保持封閉性。
- 採用歐幾里得除法,將結果分解為商和餘數的組合形式: 這種表達式滿足,其數學基礎可追溯至《幾何原本》中關於線段分割的公理體系。該處理方式在密碼學和算法設計中具有重要應用,如RSA加密演算法中的模冪運算。
- 實施整數截斷,直接取商的地板值(floor function),即。該處理方式在程式語言中普遍使用,如C語言的整數除法運算符「/」默認採用此規則。但需要注意的是:
- 不同語言對負數處理存在差異。例如,C語言採用向零取整(T-division),而Python採用向下取整(F-division)。
- 不同語言對整數除法的實現存在顯著差異。例如,MATLAB和計算機代數系統通常返回精確分數,而Java、C++等語言則返回截斷後的整數。為獲取完整結果,多數語言提供輔助函數,如Python的divmod()可同時獲取商和餘數,Java的Math.floorDiv()可實現地板值除法。
- 術語方面,「div」、「/」、「\」等符號在不同語境下可能代表不同運算規則。例如,C++中的「/」運算符對整數執行截斷除法,而對浮點數執行精確除法;Python的「//」運算符則嚴格實施地板值除法。這種語義差異要求程式員必須明確上下文環境。
欲快速判定整數可除性(整除性),可藉助整除規則:如2的倍數末位為偶數,3的倍數各位數字之和可被3整除等。這些規則本質上是數論中同餘理論的特例。
在除數非零的前提下,兩個有理數相除,結果仍為有理數。
具體而言,對於有理數和(其中 均為整數且 ),其除法運算可表示為:
該公式表明,有理數的除法本質上是乘以除數的倒數。所有參與運算的量均為整數,且僅有分子 允許為零(此時結果為有理數0)。
這一定義嚴格保證了除法與乘法的逆運算關係:若 ,則必然滿足 。
由有理數除法可得,在除數非零的前提下,兩實數相除,結果仍為實數。
對於兩個非零複數 和 (其中 ,且 和 不同時為零),其除法運算通過分母實數化實現。先將分子和分母同時乘以分母的共軛複數 ,分子展開後再分離實部與虛部,即
該方法通過消去分母的虛部實現有理化,分母變為實數。
當上文複數表示為極坐標形式 和 (與上述條件相同外, )時,運算可進一步簡化為:
該方法直接利用歐拉公式的性質,避免了複雜的代數運算。
和整數之間的帶餘除法類似,一元多項式之間也可以進行帶餘除法。 證明:
設有多項式和非零多項式,則存在唯一的多項式和,滿足:
而多項式若非零多項式,則其冪次嚴格小於的冪次。
作為特例,如果要計算某個多項式除以一次多項式得到的餘多項式,可以直接將代入到多項式中。除以的餘多項式是。
具體的計算可以使用類似直式除法的方式。例如,計算除以,列式如下:
因此,商式是,餘式是。
矩陣除法可通過逆矩陣運算實現,通常定義為右除:對於可逆方陣 和 ,其除法運算表示為:
其中 為 的逆矩陣。為避免歧義,該運算更常見於顯式寫出乘積形式 。
此外,矩陣的元素級除法可通過阿達瑪積定義,即對應元素相除:
- (要求 元素非零)
抽象代數中,給定一個帶有二元運算 * 的廣群,左除(記為 a \ b )通常定義為滿足方程式 a ∗ x = b 的解 ,類似地,右除記為 b / a )通常定義為滿足方程式 y ∗ a = b 的解 。這種除法定義不要求運算 * 具有交換性、結合性或單位元素等性質。若一個廣群中,所有元素對 和 的左除和右除均存在且唯一(即滿足拉丁方陣),則該廣群稱為擬群。在擬群中,即使沒有單位元素和反元素,這種除法運算始終可行。
在任意廣群中,若元素 滿足消去律,則可通過 對元素進行消去操作。例如:
在整環中,雖然並非所有元素都有反元素,但對可消去元素 ,仍可對形如 或 的元素進行左除( a \ (ab) = b)或右除( (ca) / a = c)。進一步地,若一個有限環的所有非零元素均滿足消去性質,則根據鴿巢原理,每個非零元素必為可逆元素,從而該環成為除環,此時任意非零元素均可作除法。
博特週期性定理表明,對於滿足特定條件的代數結構(如有限維實範數除法代數),其僅能與以下四類結構同構:
首先,我們來思考兩個正整數 和 的除法運算,採用歐幾里得除法。
設 和 均為 位二進制數,其中 表示第 位(從右向左,編號為 至 ), 表示從第 位到第 位的連續位段。以下偽代碼(因詞彙採用法語而非英語,如無另外說明,以下偽代碼詞彙皆用法語)實現了該除法的商 和餘數 的計算:
fonction [Q, R] = diviser(a, b)
si b == 0 alors génère l'exception "division par zéro" ;
Q := 0 ; R := a ; // initialisation
pour i = n-1 → 0
si a(n:i) >= b alors
Q(i) = 1 ; // i-ème bit du quotient
R = a(n:i) - b ; // reste
fin
fin
retourne [Q, R] ;
fin
算法從被除數的最高位開始,逐步截取與除數同長度的位段(記為 ),並判斷是否滿足 。若當前截取的被除數高位段(從最高位開始逐步擴展)小於除數,則商的對應位為0;若該位段數值大於等於除數b,則通過一次減法操作確定商的當前位為1,並更新餘數 。
原始偽代碼通過逐位比較實現,而最佳化版本有以下改進:
fonction [Q, R] = diviser(a, b)
si b == 0 alors génère l'exception "division par zéro" ;
Q := 0 ; R := 0 ; // initialisation
pour i = n-1 → 0
R = décalage_à_gauche_de_bits(R, 1) ; // équivaut à rajouter un 0 à droite
R(1) = a(i) ; // le bit de poids faible de R est le i-ème bit du numérateur
si R >= b alors
Q(i) = 1 ; // i-ème bit du quotient
R = R - b ; // reste
fin
fin
retourne [Q, R] ;
fin
而對於浮點數,只需將其分解為尾數和指數,公式為:
但需處理捨入誤差,如採用捨入到最近偶數策略。
總之,該算法僅需比較、位移、減法三種基本操作,體現了計算機算術運算中位級最佳化的核心思想,適合在微處理器中通過組合邏輯電路或狀態機實際操作。
設被除數 和除數 均為 位二進制數,其中 表示第 位(從右向左,編號為 至 ), 表示從第 位到第 位的連續位段。算法核心思想是通過遞迴關係構造商 和餘數 。
在第 步迭代中,餘數更新公式為:
若當前餘數 左移後大於等於除數 ,則商位 ,更新餘數
若結果為負,則商位 ,需恢復餘數
- (通過加回除數實現)
此算法下,原始版本偽代碼如下:
fonction [Q, R] = diviser(a, b)
si b == 0 alors génère l'exception "division par zéro" ;
R := a // valeur initiale du reste
b := décalage_à_gauche_de_bits(b, n)
pour i = n-1 → 0
R := décalage_à_gauche_de_bits(b, 1)
si R >= b alors
Q(i) := 1 // le i-ème bit de i est 1
R = R - b
sinon
Q(i) := 0 // le i-ème bit de i est 0
fin
fin
retourner[Q, R]
fin
最佳化版本偽代碼如下:
fonction [Q, R] = diviser(a, b)
si b == 0 alors génère l'exception "division par zéro" ;
R := a // valeur initiale du reste
b := décalage_à_gauche_de_bits(b, n)
pour i = n-1 → 0
R := 2*R - b // le reste décalé est-il supérieur à b ?
si R >= 0 alors
Q(i) := 1 // le i-ème bit de i est 1
sinon
Q(i) := 0 // le i-ème bit de i est 0
R := R + b // on restaure la valeur du reste en gardant le décalage
fin
fin
retourner[Q, R]
fin
由於循環中的最後一條語句,這種算法被稱為「帶恢復的除法」。通過引入+1和-1商位生成機制,可改進為無恢復餘數算法。
例如,二進制數11101010
可通過以下方式計算:
11101010
-00010101
---------
11010101,通過商位符號擴展避免餘數恢復步驟。
無恢復餘數算法偽代碼如下:
fonction [Q, R] = diviser(a, b)
si b == 0 alors génère l'exception "division par zéro" ;
R[0] := a
i := 0
tant que i < n
si R[i] >= 0 alors
Q[n-(i+1)] := 1
R[i+1] := 2*R[i] - b
sinon
Q[n-(i+1)] := -1
R[i+1] := 2*R[i] + b
fin
i := i + 1
fin
Q = transforme(Q)
retourner[Q, R]
fin
另外,還有SRT算法,一種通過商位查找表的非恢復方法。
快速除法的核心思想,是通過計算倒數實現除法運算,即先計算 ,再通過乘法 得到商。此乃牛頓-拉夫森法,其數學形式為:
其中,函數 的零點即為 。迭代公式可簡化為:
為加速收斂,需對 進行初始估計。先將除數 的二進制指數對齊至區間 ,再採用預計算的線性近似公式:
其中係數 和 已預先存儲為常數。
牛頓-拉夫森法具有二次收斂性,誤差隨迭代次數指數級下降。對於 位精度,所需迭代次數為:
欲求單精度浮點數(24位尾數),需要約3次迭代;欲求雙精度浮點數(53位尾數),則需約4次迭代。
牛頓-拉夫森法偽代碼如下:
fonction [Q] = diviser(a, b)
e := exposant(b) // b = M*2^e (représentation en virgule flottante)
b' := b/2^{e + 1} // normalisation ; peut se faire par un décalage de e+1 bits à droite
a' := a/2^{e + 1} // 0.5 <= b <= 1 ; a'/b' = a/b
X := 48/17 - 32/17*b' // initialisation de la méthode de Newton
pour i = 1 → s // s précalculé en fonction du nombre p de bits de la mantisse
X := X + X*(1 - b*X)
fin
Q := a'*X
retourne[Q]
fin
至於高施密特法,則是基於倒數逼近原理實現除法運算。其核心思想是通過構造因子序列
使得歸一化後的除數b滿足收斂條件
- 。
整除
整除是數學中兩個自然數之間的一種關係。自然數可以被自然數整除,是指是的因數,且a是b的整數倍數,也就是除以沒有餘數。
因數判別法可參照整除規則。
表示整除,即是的倍數,是的因數。
可以被整除,記作。
不能被整除(因為餘數為),記作。在上加一條斜線即表示不整除。
運算方法
根據乘法表,兩個整數可以用長除法(直式除法)筆算。如果被除數有分數部分(或者說時小數點),計算時將小數點帶下來就可以;如果除數有小數點,將除數與被除數的小數點同時移位,直到除數沒有小數點。
算盤也可以做除法運算。
長除法俗稱「長除」,適用於正式除法、小數除法、多項式除法(即因式分解)等較重視計算過程和商數的除法,過程中兼用了乘法和減法。
使用長除法計算的過程可以表示為:

短除法是長除法的簡化版本。在短除法裏,被除數放中央,旁以一L型符號表示除法,被除數左側為除數,下側為商,省去了長除法逐層計算的過程。
- 使用短除法計算的近似值:
- 使用短除法計算的質因數分解:
類似於乘法、冪運算和平方根,除法同樣可以用尺規作圖來表示。下文將展示兩種不同的操作方法:
一種方法是作圓法。
兩幅附圖分別展示了一種簡潔解法,該解法同時適用於 及其倒數 。圖中的虛線圓和弧並非解題所需,而憑通過弦定理,更清晰地展示證明過程。為方便對比,圖中各點的命名與弦定理引言圖一致。
以下僅針對 的情況(圖1)說明構造步驟(至於 的情況,見圖2):

時的尺規作圖構造

時的尺規作圖構造
- 在數軸上,將長度 和 的兩條共線線段分別標記為線段 和 ;
- 過點 作 的垂線,並作一條與 距離為1的平行線,兩線交於點 。為確定過點 的弧 的圓心 ,需作弦 和 的兩條中垂線(圖中未畫出);
- 繪製弧 ,其與另一輔助線交於點 ;
- 連接點 和 ,該連線與過 作的垂線交於 ;
- 從點 出發,作過 的射線,直至其與過 作的垂線交於 。
至此,構造基本完成。為避免出現重疊, 與 的長度關係需單獨說明。
對圖1的證明:
在以 為圓心的圓 中應用弦定理可得:
在以 為圓心的圓 中應用弦定理可得:
另一種方法是利用截線定理,用尺規作全等三角形。(圖3)具體步驟如下:

時的尺規作圖構造
- 自點 引出第一條射線;
- 在該射線上,以 為起點,先截取長度為 的線段 ,再截取長度為 的線段 ;
- 自點 出發,在與 成任意角 的方向上截取長度為 的線段 ;
- 過點 作自點 引出的第二條射線;
- 自點 作與 平行的直線,該直線與第二條射線的交點 所對應的線段 即為所求商 的長度。
關於「除以零」
在標準數學體系中,除以零被定義為「未定義」操作,因其與「零乘任何有限數恆為零」相悖[4],計算器輸入此類表達式也會報錯。但在零環和輪代數等高階數學結構中,通過重新定義運算規則,除以零可被賦予特定意義。

部分人認為,這個問題應當賦予「∞」的解,因為經驗表明,當分配者數量趨近於零時,每個個體獲得的量會趨向無限。然而,這種直覺在數學體系中會引發根本性矛盾。
首先,引入「∞」這一「值」將導致環及其算術體系的瓦解。具體表現為:
- 傳統算術運算規則失效(如 ∞ ∞ 未定義)
- 出現大量不定式(如型表達式)
- 需另外建立特殊處理法則
其次,通過極限理論,在x=0處,函數 同時具有正負兩個方向的發散趨勢:
- 右極限:
- 左極限:
由於正負無窮不可比較,該點不存在傳統意義上的極限值。
而且,在有理數集 和實數集 中,引入無窮大會破壞原有序關係,導致比較運算的邏輯悖論。
最後,直接承認方程式 無解具有顯著優勢:
接受該方程式無解的樸素事實,並藉助分析學工具(如羅必達法則)處理相關問題,是更為合理且自洽的解決方案。
參見
參考資料
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads