热门问题
时间线
聊天
视角
除法
運算 来自维基百科,自由的百科全书
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