將20個蘋果平均分成四等分(左上),每份有5個蘋果(右下),即
20
÷
4
=
5
{\displaystyle {{20}\div {4}}=5}
;亦可以說成,將20個蘋果每5個分成一份(右下),共可分成四等分(左上),此時可以表達為
20
÷
5
=
4
{\displaystyle {{20}\div {5}}=4}
除法 (英语、法语:division)是四则运算 之一。除法运算的本质,就是「重复減法 的简化表达」。
例如:
6
÷
3
=
2
{\displaystyle {{6}\div {3}}=2}
,就好像
6
−
3
−
3
=
0
{\displaystyle {{{6}-{3}}-{3}}=0}
,
{
6
−
3
=
3
3
−
3
=
0
{\displaystyle {\begin{cases}6-3=3\\3-3=0\end{cases}}}
,
6
{\displaystyle 6}
被
3
{\displaystyle 3}
減了兩次後,就變成了
0
{\displaystyle 0}
。
如果
a
×
b
=
c
{\displaystyle a\times b=c}
而且
b
{\displaystyle b}
不等于 零 ,那么
a
=
c
÷
b
{\displaystyle a=c\div b}
其中,a称为商数 ,b称为除数 ,c称为被除数 。
如果除式的商數(
a
{\displaystyle a}
)必須是整數 ,则称为带餘除法 ,
a
×
b
{\displaystyle a\times b}
与
c
{\displaystyle c}
相差的数值,称为餘數 (
d
{\displaystyle d}
)。
c
÷
b
=
a
…
d
{\displaystyle c\div b=a\dots d}
這也意味著
c
=
a
×
b
+
d
{\displaystyle c=a\times b+d}
在高等数学 、科学 、工程学 和计算机编程语言 中,
c
÷
b
{\displaystyle c\div b}
写成
c
/
b
{\displaystyle c/b}
。如果我们毋需知晓确切值,或者留待以后引用,这种形式也常称之为分数 的最终形式。其中尋找商數的函數為
div
{\displaystyle \operatorname {div} }
,尋找餘數(即模除 )的函數則為
mod
{\displaystyle \operatorname {mod} }
。
在代数结构 范畴中,除法运算存在两种基本形式,对应不同的数学结构定义:
带余除法(欧几里得除法):若代数结构中定义了带余除法(即存在商和余数,且余数的范数严格小于除数的范数),则该结构称为歐幾里得整環 。例如,一元 多项式 环 (系数取自域)在其多项式次数构成的范数下构成欧几里得整环。
无余除法:若代数结构中所有非零元素均可逆(即对任意非零元素
a
{\displaystyle a}
,存在
b
{\displaystyle b}
使得
a
b
=
b
a
=
1
{\displaystyle ab=ba=1}
),则该结构称为域 ;若仅满足乘法可逆性(不要求交换性),则称为除环 。例如,复数 是域,而四元數 是除环。
首先,进入正题前,我们不妨来看两个生活中的例子:
将500克糖果均分给8人:由
500
8
=
62
.
5
{\displaystyle {\dfrac {500}{8}}=62{.}5}
可得,每人获得62.5克糖果(无余除法)
500克奶粉,按70克/份分配:由
500
70
=
7
.
14
…
{\displaystyle {\dfrac {500}{70}}=7{.}14\ldots }
可得,可完整分配7份,余量≈0.14份(带余除法)
其次,数学和物理存在许多“比例关系反演” :
已知某物体重力
P
=
m
×
g
{\displaystyle P=m\times g}
,可得质量
m
=
P
/
g
{\displaystyle m=P/g}
;
已知匀速直线运动 状态下,某物体行进距离
d
=
v
×
t
{\displaystyle d=v\times t}
,可得时间
t
=
d
/
v
{\displaystyle t=d/v}
;
对一般仿射关系
y
=
a
x
+
b
{\displaystyle y=ax+b}
,其逆映射 为
x
=
(
y
−
b
)
/
a
{\displaystyle x=(y-b)/a}
;
当函数局部可線性化 时(如泰勒展开 一阶近似):
y
=
f
(
x
)
≈
f
(
x
0
)
+
f
′
(
x
0
)
×
(
x
−
x
0
)
{\displaystyle y=f(x)\approx f(x_{0})+f'(x_{0})\times (x-x_{0})}
,
可构造逆函数近似解:
x
≃
x
0
+
f
(
x
)
−
f
(
x
0
)
f
′
(
x
0
)
{\displaystyle x\simeq x_{0}+{\frac {f(x)-f(x_{0})}{f'(x_{0})}}}
;
f
−
1
(
y
)
≃
x
0
+
y
−
f
(
x
0
)
f
′
(
x
0
)
{\displaystyle f^{-1}(y)\simeq x_{0}+{\frac {y-f(x_{0})}{f'(x_{0})}}}
;
此乃牛顿迭代法 求根的理论基础:
f
−
1
(
0
)
≃
x
0
−
f
(
x
0
)
f
′
(
x
0
)
{\displaystyle f^{-1}(0)\simeq x_{0}-{\frac {f(x_{0})}{f'(x_{0})}}}
。
可见,在数学 ,尤其是在基本算术 中,除法可视为「乘法 的反运算 」,也可理解为「重复的减法 」。
首先,我们来定义整数间的带余除法 。这一运算的核心,是将被除数表示为“除数的整数倍+余数”的形式,且余数需满足特定条件。
具体而言,对于任意整数
a
{\displaystyle a}
和非零整数
b
{\displaystyle b}
,存在唯一的整数
q
{\displaystyle q}
(商)和
r
{\displaystyle r}
(余数),使得:
a
=
b
×
q
+
r
{\displaystyle a=b\times q+r}
且
0
≤
r
<
|
b
|
{\displaystyle 0\leq r<|b|}
其中,余数
r
{\displaystyle r}
的非负性及小于除数绝对值的性质确保了分解的唯一性。
该定义是数论 中整除、同余 等概念的基础,并广泛用于模运算 、輾轉相除法 等算法中。
带余除法的概念,已能凸显除零 问题的本质:如何将一个量分成0份?显然,这没有实际意义。
随后,我们引入十进制 数的概念,并通过递归 处理余数的方式扩展计算过程,由此便有了有理数 的定义体系。至于实数 ,则在有理数基础上拓展而成。
此时可以设想,将整体划分为更小的单位份额,从而实现分数除法 :将一个量除以
0.1
{\displaystyle 0.1}
(即
1
/
10
{\displaystyle 1/10}
),意味着初始量相当于
1
/
10
{\displaystyle 1/10}
个单位份额,进而求出完整单位 的大小;而将一个量除以负数 ,则相当于计算需要移除的单位份额规模。
無理數 无法直观理解为具体数量,但可视为一种比 ——例如正方形 对角线与边长之比,或圆 周长与其直径之比。至此,除法运算不再能单纯定义为“划分”,而应理解为乘法逆运算 。
基于此定义,除以零仍无意义。由于零乘任何数都得零(
0
×
a
=
0
{\displaystyle 0\times a=0}
),零便有无穷多个乘法逆元 。我们亦可从极限 角度理解该问题——因为除以某数等价于乘以其倒数 ,故可将原问题转化为函数
f
(
x
)
=
1
/
x
{\displaystyle f(x)=1/x}
在零点 处极限的操作:当
x
{\displaystyle x}
从左侧趋近于零时,极限为
−
∞
{\displaystyle -\infty }
,从右侧趋近时,则为
+
∞
{\displaystyle +\infty }
。
即便通过引入广义实数集(即在实数轴上添加
−
∞
{\displaystyle -\infty }
和
+
∞
{\displaystyle +\infty }
这两个“伪无穷大”)来扩展数系,问题仍未解决,因为极限值的符号不确定性 依然存在。由此可见,除法在代数 与数分 中具有根本性意义。
设
(
A
,
+
,
×
)
{\displaystyle (A,+,\times )}
为整环 ,则
A
{\displaystyle A}
上的除法运算定义为满足以下条件的二元关系:
运算规则:对于任意
a
,
b
,
c
∈
A
{\displaystyle a,\,b,\,c\in A}
,
a
÷
b
=
c
{\displaystyle a\div b=c}
,当且仅当
b
×
c
=
a
{\displaystyle b\times c=a}
(其中
b
≠
0
{\displaystyle b\neq 0}
);
唯一性:整环的乘法消去律保证除法结果唯一(若
b
×
c
1
=
a
{\displaystyle b\times c_{1}=a}
且
b
×
c
2
=
a
{\displaystyle b\times c_{2}=a}
,则
c
1
=
c
2
{\displaystyle c_{1}=c_{2}}
);
定义域限制:除法仅在
A
×
(
A
−
{
0
}
)
{\displaystyle \mathrm {A} \times (\mathrm {A} -\{0\})}
上有定义,即除数不能为零。
若 A 为交换环 ,可通过等价关系扩展除法:
定义等价关系
∼
{\displaystyle \sim }
:
(
a
,
b
)
∼
(
a
′
,
b
′
)
⟺
a
×
b
′
=
a
′
×
b
{\displaystyle (a,b)\sim (a',b')\iff a\times b'=a'\times b}
,其等价类称为分数,记为
a
/
b
{\displaystyle a/b}
;
扩展后的集合
A
/
∼
{\displaystyle A/\sim }
构成域 (含乘法逆元),其中
0
/
1
{\displaystyle 0/1}
为加法单位元,
1
/
1
{\displaystyle 1/1}
为乘法单位元。此即有理数域
Q
{\displaystyle \mathbb {Q} }
的构造基础。
除零禁止:零元无乘法逆元,故
b
=
0
{\displaystyle b=0}
时除法无定义。
与欧几里得除法的区别:
环论中的除法是乘法的逆运算,强调代数结构 ;
欧几里得除法侧重整数间的带余除法(如上文的带余除法),两者本质不同。
基础算术中,除号“÷”仍被广泛使用,而在代数 与科学 领域,除法通常用水平横线(也被称为分数分划线)或斜杠 表示被除数与除数的关系。除这三种以外,还有其它不同形式。
用除号将被除数和除数相隔开:
a
÷
b
{\displaystyle a\div b}
但实际上,除了在基础算术外,这种形式并不常见。ISO 80000-2-10.6 标准明确禁止使用该符号,因部分欧洲国家用 ÷ 表示減法 ,容易产生混淆。[ 1]
将被除数置于分数线上方,除数置于下方,例如:
a
b
{\displaystyle {\frac {a}{b}}}
该形式可读作“a除以b”、“b除a”或“a比b”。
在单行文本中,使用斜杠分隔被除数与除数,例如:
a
/
b
{\displaystyle a/b}
此写法常见于编程语言 和计算器 输入中。
另外,有部分数学软件(如MATLAB 、GNU Octave )采用反斜杠 表示运算顺序反转的除法:
b
∖
a
{\displaystyle b\backslash a}
(等价于
a
/
b
{\displaystyle a/b}
)
还有以上下标斜杠显示的:
a
/
b
{\displaystyle {}^{a}\!/{}_{b}}
在某些非英语国家,有的用冒号将被除数和除数相隔开:
a
:
b
{\displaystyle a:b}
此用法由奥特雷德 于1631年最先引入,自莱布尼兹 于1684年提倡以来,才为人广泛应用。[ 2] :295 莱布尼兹更喜欢用同一个符号表示除法和比率。而在英语用法中,“:”一般只表示比率。
在大部分非英语 语言中,
c
:
b
{\displaystyle c:b}
代表
c
÷
b
{\displaystyle c\div b}
的比 ,讀做c比b;
c
/
b
{\displaystyle c/b}
則代表
c
÷
b
{\displaystyle c\div b}
的比值 。用法请参照比例 。
除了以上这四种形式,美国自19世纪起便开始使用
b
)
a
{\displaystyle b)a}
或
b
)
a
¯
{\displaystyle b{\overline {)a}}}
来單獨表示
a
{\displaystyle a}
除以
b
{\displaystyle b}
,尤常见于長除法 中。时至今日,美国仍有零星人口使用这种写法。[ 3]
严格而言,除法并不构成集合 上的内部合成法则 (一种二元运算 ),其所谓“性质”并不构成数集的结构特性,而应理解为分数形式的固有属性。
非交换律:
5
÷
3
≠
3
÷
5
{\displaystyle 5\div 3\neq 3\div 5}
非结合律:
12
÷
(
4
÷
3
)
≠
(
12
÷
4
)
÷
3
{\displaystyle 12\div (4\div 3)\neq (12\div 4)\div 3}
右单位元:对任意数
a
{\displaystyle a}
,存在
a
1
=
a
{\displaystyle {\dfrac {a}{1}}=a}
。
左零吸收元:当
b
≠
0
{\displaystyle b\neq 0}
时,
0
b
=
0
{\displaystyle {\dfrac {0}{b}}=0}
。
分数等式:
同分母时:当
b
≠
0
{\displaystyle b\neq 0}
时,
a
b
=
c
b
⟺
a
=
c
{\displaystyle {\dfrac {a}{b}}={\dfrac {c}{b}}\iff a=c}
。
通分等价:当
b
≠
0
∧
d
≠
0
{\displaystyle b\neq 0\wedge d\neq 0}
时,
a
b
=
c
d
⟺
a
d
=
b
c
{\displaystyle {\dfrac {a}{b}}={\dfrac {c}{d}}\iff ad=bc}
。
顺序保持性:当
b
>
0
{\displaystyle b>0}
时,分数
a
b
{\displaystyle {\dfrac {a}{b}}}
与
c
b
{\displaystyle {\dfrac {c}{b}}}
的大小关系与原数
a
{\displaystyle a}
和
c
{\displaystyle c}
保持一致。
零除以任何非零的数都为零。即在被除数为零,除数非零的前提下,商数为零。
整数集在除法运算下没有封闭性,这意味着,两个整数 相除,结果不一定是整数。除零操作本身即无定义外,当被除数不是除数的整数倍时,商将呈现为非整数形式。
以26除以11为例,其商即便非整数,但也属于有理数范畴。此时通常采用以下5种处理策略:
将此类除法视为偏函数 ,即当除法无法得到整数结果时直接判定为无定义。这种处理方式严格遵循数学定义,但会限制运算的应用范围。
采用浮点近似法,将结果表示为带有小数 部分的实数。这是数值计算方面的通用做法,例如
26
÷
11
=
2.3636...
{\displaystyle 26\div 11=2.3636...}
该方法通过牺牲精确性来换取运算的普适性,但可能引入捨入誤差 。
通过分數 形式保持精确性,将结果表示为既约分数
26
11
{\displaystyle {\tfrac {26}{11}}}
或带分数
2
4
11
{\displaystyle 2{\tfrac {4}{11}}}
。这种处理要求分子分母的最大公约数 为1,例如
52
22
{\displaystyle {\tfrac {52}{22}}}
经约简后同样得到
26
11
{\displaystyle {\tfrac {26}{11}}}
。分数体系通过引入有理数集
Q
{\displaystyle \mathbb {Q} }
,使整数除法在更广泛的數系 中保持封闭性。
采用欧几里得除法 ,将结果分解为商和余数的组合形式:
26
11
=
2
remainder
4.
{\displaystyle {\tfrac {26}{11}}=2{\mbox{ remainder }}4.}
这种表达式满足
0
≤
4
<
11
{\displaystyle 0\leq 4<11}
,其数学基础可追溯至《几何原本 》中关于线段 分割的公理 体系。该处理方式在密码学 和算法设计 中具有重要应用,如RSA加密演算法 中的模幂 运算。
实施整数截断 ,直接取商的地板值 (floor function),即
26
11
=
2
{\displaystyle {\tfrac {26}{11}}=2}
。该处理方式在编程语言 中普遍使用,如C语言 的整数除法运算符 “/”默认采用此规则。但需要注意的是:
不同语言对负数处理存在差异。例如,C语言采用向零取整(T-division),而Python 采用向下取整(F-division)。
不同语言对整数除法的实现存在显著差异。例如,MATLAB 和計算機代數系統 通常返回精确分数,而Java 、C++ 等语言则返回截断后的整数。为获取完整结果,多数语言提供辅助函数,如Python的divmod()可同时获取商和余数,Java的Math.floorDiv()可实现地板值除法。
术语 方面,“div”、“/”、“\”等符号在不同语境下可能代表不同运算规则。例如,C++中的“/”运算符对整数执行截断除法,而对浮点数执行精确除法;Python的“//”运算符则严格实施地板值除法。这种语义差异要求程式员 必须明确上下文环境。
欲快速判定整数可除性(整除性),可借助整除规则 :如2的倍数末位为偶数 ,3的倍数各位数字之和可被3整除等。这些规则本质上是数论 中同余 理论的特例。
在除数非零的前提下,两个有理数 相除,结果仍为有理数。
具体而言,对于有理数
p
q
{\displaystyle {\frac {p}{q}}}
和
r
s
{\displaystyle {\frac {r}{s}}}
(其中
p
,
q
,
r
,
s
{\displaystyle p,q,r,s}
均为整数且
q
,
s
≠
0
{\displaystyle q,s\neq 0}
),其除法运算可表示为:
p
/
q
r
/
s
=
p
q
×
s
r
=
p
s
q
r
{\displaystyle {p/q \over r/s}={p \over q}\times {s \over r}={ps \over qr}}
该公式表明,有理数的除法本质上是乘以除数的倒数 。所有参与运算的量 均为整数,且仅有分子
p
{\displaystyle p}
允许为零(此时结果为有理数0)。
这一定义严格保证了除法与乘法的逆运算关系:若
a
b
÷
c
d
=
e
f
{\displaystyle {\frac {a}{b}}\div {\frac {c}{d}}={\frac {e}{f}}}
,则必然满足
e
f
×
c
d
=
a
b
{\displaystyle {\frac {e}{f}}\times {\frac {c}{d}}={\frac {a}{b}}}
。
由有理数除法可得,在除数非零的前提下,两实数 相除,结果仍为实数。
对于两个非零复数
p
+
i
q
{\displaystyle p+iq}
和
r
+
i
s
{\displaystyle r+is}
(其中
p
,
q
,
r
,
s
∈
R
{\displaystyle p,\,q,\,r,\,s\in \mathbb {R} }
,且
r
{\displaystyle r}
和
s
{\displaystyle s}
不同时为零),其除法运算通过分母实数化实现。先将分子和分母同时乘以分母的共轭复数
r
−
i
s
{\displaystyle r-is}
,分子展开后再分离实部与虚部,即
p
+
i
q
r
+
i
s
=
(
p
+
i
q
)
(
r
−
i
s
)
(
r
+
i
s
)
(
r
−
i
s
)
=
p
r
+
q
s
+
i
(
q
r
−
p
s
)
r
2
+
s
2
=
p
r
+
q
s
r
2
+
s
2
+
i
q
r
−
p
s
r
2
+
s
2
{\displaystyle {p+iq \over r+is}={(p+iq)(r-is) \over (r+is)(r-is)}={pr+qs+i(qr-ps) \over r^{2}+s^{2}}={pr+qs \over r^{2}+s^{2}}+i{qr-ps \over r^{2}+s^{2}}}
该方法通过消去分母的虚部实现有理化,分母变为实数。
当上文复数表示为极坐标 形式
p
e
i
q
{\displaystyle pe^{iq}}
和
r
e
i
s
{\displaystyle re^{is}}
(与上述条件相同外,
p
,
r
>
0
{\displaystyle p,r>0}
)时,运算可进一步简化为:
p
e
i
q
r
e
i
s
=
p
e
i
q
e
−
i
s
r
e
i
s
e
−
i
s
=
p
r
e
i
(
q
−
s
)
{\displaystyle {pe^{iq} \over re^{is}}={pe^{iq}e^{-is} \over re^{is}e^{-is}}={p \over r}e^{i(q-s)}}
该方法直接利用欧拉公式 的性质,避免了复杂的代数运算。
和整数 之间的带余除法 类似,一元多项式之间也可以进行带余除法。
证明:
设有多项式
A
{\displaystyle A}
和非零多项式
B
{\displaystyle B}
,则存在唯一的多项式
Q
{\displaystyle Q}
和
R
{\displaystyle R}
,满足:
A
=
B
Q
+
R
{\displaystyle A=BQ+R}
而多项式
R
{\displaystyle R}
若非零多项式,則其冪次严格小于
B
{\displaystyle B}
的冪次。
作为特例,如果要计算某个多项式
P
{\displaystyle P}
除以一次多项式
X
−
a
{\displaystyle X-a}
得到的餘多项式,可以直接将
a
{\displaystyle a}
代入到多项式
P
{\displaystyle P}
中。
P
{\displaystyle P}
除以
X
−
a
{\displaystyle X-a}
的餘多项式是
P
(
a
)
{\displaystyle P(a)}
。
具体的计算可以使用类似直式除法的方式。例如,计算
X
3
−
12
X
2
−
42
{\displaystyle X^{3}-12X^{2}-42}
除以
X
−
3
{\displaystyle X-3}
,列式如下:
X
2
−
9
X
−
27
X
−
3
|
X
3
−
12
X
2
+
0
X
−
42
¯
X
3
−
3
X
2
_
−
9
X
2
+
0
X
−
9
X
2
+
27
X
_
−
27
X
−
42
−
27
X
+
81
_
−
123
{\displaystyle {\begin{matrix}\qquad \quad \;\,X^{2}\;-9X\quad -27\\\qquad \quad X-3{\overline {\vert X^{3}-12X^{2}+0X-42}}\\\;\;{\underline {\;\;X^{3}-\;\;3X^{2}}}\\\qquad \qquad \quad \;-9X^{2}+0X\\\qquad \qquad \quad \;{\underline {-9X^{2}+27X}}\\\qquad \qquad \qquad \qquad \qquad -27X-42\\\qquad \qquad \qquad \qquad \qquad {\underline {-27X+81}}\\\qquad \qquad \qquad \qquad \qquad \qquad \;\;-123\end{matrix}}}
因此,商式是
X
2
−
9
X
−
27
{\displaystyle \ X^{2}-9X-27}
,餘式是
−
123
{\displaystyle \ -123}
。
矩阵除法可通过逆矩阵 运算实现,通常定义为右除:对于可逆方阵
A
{\displaystyle A}
和
B
{\displaystyle B}
,其除法运算表示为:
A
/
B
=
A
⋅
B
−
1
{\displaystyle A/B=A\cdot B^{-1}}
其中
B
−
1
{\displaystyle B^{-1}}
为
B
{\displaystyle B}
的逆矩阵。为避免歧义,该运算更常见于显式写出乘积 形式
A
B
−
1
{\displaystyle AB^{-1}}
。
此外,矩阵的元素级除法可通过阿达玛积 定义,即对应元素 相除:
A
B
=
A
∘
B
{\displaystyle {A \over B}=A\circ B}
(要求
B
{\displaystyle B}
元素非零)
抽象代数 中,给定一个带有二元运算 * 的广群 ,左除(记为 a \ b )通常定义为满足方程 a ∗ x = b 的解
x
{\displaystyle x}
,类似地,右除记为 b / a )通常定义为满足方程 y ∗ a = b 的解
y
{\displaystyle y}
。这种除法定义不要求运算 * 具有交换性 、结合性 或單位元 等性质。若一个广群中,所有元素对
a
{\displaystyle a}
和
b
{\displaystyle b}
的左除和右除均存在且唯一(即满足拉丁方陣 ),则该广群称为拟群 。在拟群中,即使没有单位元和逆元,这种除法运算始终可行。
在任意广群中,若元素
a
{\displaystyle a}
满足消去律 ,则可通过
a
{\displaystyle a}
对元素进行消去操作。例如:
矩阵 代数中,可逆矩阵 的左乘或右乘满足消去律;
四元數 代数中,非零元素满足消去律;
拟群 的结构天然支持消去操作。
在整环 中,虽然并非所有元素都有逆元,但对可消去元素
a
{\displaystyle a}
,仍可对形如
a
b
{\displaystyle ab}
或
c
a
{\displaystyle ca}
的元素进行左除( a \ (ab) = b )或右除( (ca) / a = c )。进一步地,若一个有限环 的所有非零元素均满足消去性质,则根据鴿巢原理 ,每个非零元素必为可逆元 ,从而该环成为除环 ,此时任意非零元素均可作除法。
博特周期性定理 表明,对于满足特定条件的代数结构(如有限维实范数除法代数 ),其仅能与以下四类结构同构:
实数域
R
{\displaystyle \mathbb {R} }
(维度 1);
复数域
C
{\displaystyle \mathbb {C} }
(维度 2);
四元數 代数
H
{\displaystyle \mathbb {H} }
(维度 4);
八元数 代数
O
{\displaystyle \mathbb {O} }
(维度 8)。
这一分类结果揭示了除法代数维度的内在规律性,并在拓扑学 与量子场论 中具有重要应用。
讲完以上十进制 除法,我们来介绍计算机科学 领域更为常见的二进制 编码数 除法。
首先,我们来思考两个正整数
a
{\displaystyle a}
和
b
{\displaystyle b}
的除法运算,采用欧几里得除法 。
设
a
{\displaystyle a}
和
b
{\displaystyle b}
均为
n
{\displaystyle n}
位二进制数,其中
a
(
i
)
{\displaystyle a(i)}
表示第
i
{\displaystyle i}
位(从右向左,编号为
0
{\displaystyle 0}
至
n
−
1
{\displaystyle n-1}
),
a
(
i
:
j
)
{\displaystyle a(i:j)}
表示从第
i
{\displaystyle i}
位到第
j
{\displaystyle j}
位的连续位段 。以下伪代码 (因词汇采用法语 而非英语 ,如无另外说明,以下伪代码词汇皆用法语)实现了该除法的商
Q
{\displaystyle Q}
和余数
R
{\displaystyle R}
的计算:
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
算法从被除数的最高位开始,逐步截取与除数同长度的位段(记为
a
(
n
:
i
)
{\displaystyle a(n:i)}
),并判断是否满足
a
(
n
:
i
)
≥
b
{\displaystyle a(n:i)\geq b}
。若当前截取的被除数高位段(从最高位开始逐步扩展)小于除数,则商的对应位为0;若该位段数值大于等于除数b,则通过一次减法操作确定商的当前位为1,并更新余数
R
=
a
(
n
:
i
)
−
b
{\displaystyle R=a(n:i)-b}
。
原始伪代码通过逐位比较实现,而优化版本有以下改进:
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
而对于浮点数,只需将其分解为尾数和指数,公式为:
2
m
a
2
n
b
=
2
m
−
n
a
b
{\displaystyle {\frac {2^{m}\,a}{2^{n}\,b}}=2^{m-n}{\frac {a}{b}}}
但需处理捨入誤差 ,如采用舍入到最近偶数策略。
总之,该算法仅需比较、位移、减法三种基本操作,体现了计算机算术运算中位级优化的核心思想,适合在微处理器 中通过组合逻辑电路 或状态机 实际操作。
设被除数
a
{\displaystyle a}
和除数
b
{\displaystyle b}
均为
n
{\displaystyle n}
位二进制数,其中
a
(
i
)
{\displaystyle a(i)}
表示第
i
{\displaystyle i}
位(从右向左,编号为
0
{\displaystyle 0}
至
n
−
1
{\displaystyle n-1}
),
a
(
i
:
j
)
{\displaystyle a(i:j)}
表示从第
i
{\displaystyle i}
位到第
j
{\displaystyle j}
位的连续位段。算法核心思想是通过递推关系构造商
Q
{\displaystyle Q}
和余数
R
{\displaystyle R}
。
在第
i
{\displaystyle i}
步迭代中,余数更新公式为:
R
i
=
B
×
R
i
−
1
−
Q
n
−
i
×
b
{\displaystyle R_{i}=B\times R_{i-1}-Q_{n-i}\times b}
若当前余数
R
i
−
1
{\displaystyle R_{i-1}}
左移后大于等于除数
b
{\displaystyle b}
,则商位
Q
n
−
i
=
1
{\displaystyle Q_{n-i}=1}
,更新余数
R
i
=
2
×
R
i
−
1
−
b
{\displaystyle R_{i}=2\times R_{i-1}-b}
若结果为负,则商位
Q
n
−
i
=
0
{\displaystyle Q_{n-i}=0}
,需恢复余数
R
i
=
2
×
R
i
−
1
+
b
{\displaystyle R_{i}=2\times R_{i-1}+b}
(通过加回除数实现)
此算法下,原始版本伪代码如下:
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算法,一种通过商位查找表的非恢复方法。
快速除法的核心思想,是通过计算倒数 实现除法运算,即先计算
x
=
1
/
b
{\displaystyle x=1/b}
,再通过乘法
Q
=
a
×
x
{\displaystyle Q=a\times x}
得到商。此乃牛顿-拉夫森法 ,其数学形式为:
x
i
=
x
i
−
1
−
f
b
(
x
i
−
1
)
f
b
′
(
x
i
−
1
)
{\displaystyle x_{i}=x_{i-1}-{\frac {f_{b}(x_{i-1})}{f'_{b}(x_{i-1})}}}
其中,函数
f
b
(
x
)
=
0
{\displaystyle f_{b}(x)=0}
的零点即为
1
/
b
{\displaystyle 1/b}
。迭代公式可简化为:
x
i
=
x
i
−
1
+
x
i
−
1
(
1
−
b
x
i
−
1
)
{\displaystyle x_{i}=x_{i-1}+x_{i-1}(1-bx_{i-1})}
为加速收敛,需对
1
/
b
{\displaystyle 1/b}
进行初始估计。先将除数
b
{\displaystyle b}
的二进制指数对齐至区间
[
0
,
5
;
1
]
{\displaystyle [0,5;1]}
,再采用预计算的线性近似公式:
x
0
=
48
17
−
32
17
b
(
≃
2
,
82
−
1
,
88
b
)
{\displaystyle x_{0}={\frac {48}{17}}-{\frac {32}{17}}b\ (\simeq 2{,}82-1,88b)}
其中系数
48
/
17
{\displaystyle 48/17}
和
32
/
17
{\displaystyle 32/17}
已预先存储为常量。
牛顿-拉夫森法具有二次收敛性,误差随迭代次数指数级下降。对于
p
{\displaystyle p}
位精度,所需迭代次数为:
s
=
log
2
(
p
+
1
log
2
17
)
{\displaystyle s=\log _{2}\left({\frac {p+1}{\log _{2}17}}\right)}
欲求单精度浮点数(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
至于高施密特法,则是基于倒数逼近 原理实现除法运算。其核心思想是通过构造因子序列
F
k
=
f
k
×
f
k
−
1
×
…
f
1
=
∏
(
f
i
)
{\displaystyle F_{k}=f_{k}\times f_{k-1}\times \ldots f_{1}=\prod (f_{i})}
使得归一化后的除数b满足收敛条件
b
k
=
F
k
×
b
⟹
1
{\displaystyle b_{k}=F_{k}\times b\Longrightarrow 1}
。
使用实物展示10如何被2和5整除
整除 是数学 中两个自然数 之间的一种关系 。自然数
a
{\displaystyle a}
可以被自然数
b
{\displaystyle b}
整除,是指
b
{\displaystyle b}
是
a
{\displaystyle a}
的因數 ,且a是b的整数 倍数 ,也就是
a
{\displaystyle a}
除以
b
{\displaystyle b}
没有餘数 。
a
÷
b
=
q
…
0
{\displaystyle a\div b=q\dots 0}
因數判別法可參照整除規則 。
b
∣
a
{\displaystyle b\mid a}
表示
b
{\displaystyle b}
整除
a
{\displaystyle a}
,即
a
{\displaystyle a}
是
b
{\displaystyle b}
的倍数,
b
{\displaystyle b}
是
a
{\displaystyle a}
的因数 。
15
{\displaystyle 15}
可以被
5
{\displaystyle 5}
整除,记作
5
∣
15
{\displaystyle 5\mid 15}
。
20
{\displaystyle 20}
不能被
6
{\displaystyle 6}
整除(因为餘数为
2
{\displaystyle 2}
),记作
6
∤
20
{\displaystyle 6\nmid 20}
。在
∣
{\displaystyle \mid }
上加一条斜线 即表示不整除。
根据乘法表 ,两个整数可以用长除法 (直式除法)笔算。如果被除数有分数 部分(或者说时小数点 ),计算时将小数点带下来就可以;如果除数有小数点,将除数与被除数的小数点同时移位,直到除数没有小数点。
算盘 也可以做除法运算。
長除法 俗稱「長除 」,適用於正式除法、小數 除法、多項式 除法(即因式分解 )等較重視計算過程和商數 的除法,過程中兼用了乘法 和減法 。
使用長除法計算
1260257
÷
37
=
34061
{\displaystyle {{1260257}\div {37}}=34061}
的過程可以表示為:
1260257
÷
37
{\displaystyle 1260257\div 37}
的演算過程
37
)
34061
1260257
111
150
148
225
222
37
37
0
{\displaystyle {\begin{array}{l}37\ {\big )}\\\\\\\\\\\\\\\\\end{array}}\!\!\!\!\!{\begin{array}{r}34061\\\hline \ 1260257\\111\quad \quad \\\hline 150\quad \ \ \\148\quad \ \ \\\hline 225\ \ \\222\ \ \\\hline 37\\37\\\hline 0\\\end{array}}}
短除法 是長除法的簡化版本。在短除法裏,被除數放中央,旁以一L型符號表示除法,被除數左側為除數,下側為商,省去了長除法逐層計算的過程。
使用短除法計算
3
÷
7
{\displaystyle 3\div 7}
的近似值:
7
|
3.00000000000000000
…
_
0.42857142857142857
…
{\displaystyle {\begin{array}{r}7\ |\!{\underline {\,\ 3.00000000000000000\dots \ }}\\0.42857142857142857\dots \ \end{array}}}
使用短除法計算
420
{\displaystyle 420}
的質因數分解 :
2
|
420
_
2
|
210
_
3
|
105
_
5
|
35
_
7
{\displaystyle {\begin{array}{r}2\ |\!{\underline {\,\ \ \ 420\ }}\\2\ |\!{\underline {\,\ \ 210\ }}\\3\ |\!{\underline {\,\ 105\ }}\\5\ |\!{\underline {\,\ 35\ }}\\7\ \end{array}}}
420
=
2
2
×
3
×
5
×
7
{\displaystyle 420=2^{2}\times 3\times 5\times 7}
使用短除法計算
420
,
270
{\displaystyle 420,270}
的最大公因數 及最小公倍數 :
2
|
420
270
_
3
|
210
135
_
5
|
70
45
_
14
9
{\displaystyle {\begin{array}{r}2\ |\!{\underline {\,\ \ \ 420\quad 270\ }}\\3\ |\!{\underline {\,\ \ 210\quad 135\ }}\\5\ |\!{\underline {\,\ 70\quad \ \ 45\ }}\\14\quad \ \ \ \ 9\ \end{array}}}
{
gcd
(
420
,
270
)
=
2
×
3
×
5
=
30
lcm
(
420
,
270
)
=
2
×
3
×
5
×
14
×
9
=
3780
{\displaystyle {\begin{cases}\gcd(420,270)=2\times 3\times 5=30\\\operatorname {lcm} (420,270)=2\times 3\times 5\times 14\times 9=3780\end{cases}}}
类似于乘法 、幂运算 和平方根 ,除法同样可以用尺规作图来表示。下文将展示两种不同的操作方法:
一种方法是作圆法。
两幅附图分别展示了一种简洁解法,该解法同时适用于
a
:
b
{\displaystyle a:b}
及其倒数
b
:
a
{\displaystyle b:a}
。图中的虚线圆 和弧 并非解题所需,而凭通过弦定理,更清晰地展示证明过程。为方便对比,图中各点的命名与弦定理引言图一致。
以下仅针对
a
<
b
{\displaystyle a<b}
的情况(图1)说明构造步骤(至于
a
>
b
{\displaystyle a>b}
的情况,见图2):
图1
a
<
b
{\displaystyle a<b}
时的尺规作图构造
图2
a
>
b
{\displaystyle a>b}
时的尺规作图构造
在数轴 上,将长度
a
{\displaystyle a}
和
b
{\displaystyle b}
的两条共线线段 分别标记为线段
D
S
¯
{\displaystyle {\overline {DS}}}
和
S
B
¯
{\displaystyle {\overline {SB}}}
;
过点
S
{\displaystyle S}
作
D
B
¯
{\displaystyle {\overline {DB}}}
的垂线 ,并作一条与
D
B
¯
{\displaystyle {\overline {DB}}}
距离为1的平行线 ,两线交于点
C
{\displaystyle C}
。为确定过点
C
{\displaystyle C}
的弧
k
b
{\displaystyle k_{b}}
的圓心
M
{\displaystyle M}
,需作弦
D
C
¯
{\displaystyle {\overline {DC}}}
和
C
B
¯
{\displaystyle {\overline {CB}}}
的两条中垂线 (图中未画出);
绘制弧
a
r
c
M
B
D
{\displaystyle \mathrm {arc} \;MBD}
,其与另一辅助线交于点
E
{\displaystyle E}
;
连接点
D
{\displaystyle D}
和
E
{\displaystyle E}
,该连线与过
C
{\displaystyle C}
作的垂线交于
C
′
{\displaystyle C'}
;
从点
B
{\displaystyle B}
出发,作过
E
{\displaystyle E}
的射线 ,直至其与过
C
{\displaystyle C}
作的垂线交于
C
″
{\displaystyle C''}
。
至此,构造基本完成。为避免出现重叠,
F
D
¯
{\displaystyle {\overline {FD}}}
与
C
″
S
¯
{\displaystyle {\overline {C''S}}}
的长度关系需单独说明。
对图1的证明 :
在以
M
′
{\displaystyle M'}
为圆心的圆
k
2
{\displaystyle k_{2}}
中应用弦定理可得:
A
′
S
¯
⋅
C
′
S
¯
=
B
S
¯
⋅
D
S
¯
⇒
{\displaystyle {\overline {A'S}}\cdot {\overline {C'S}}={\overline {BS}}\cdot {\overline {DS}}\Rightarrow }
a
:
b
=
C
′
S
¯
=
B
S
¯
⋅
D
S
¯
A
′
S
¯
.
{\displaystyle a:b={\overline {C'S}}={\frac {{\overline {BS}}\cdot {\overline {DS}}}{\overline {A'S}}}.}
在以
M
″
{\displaystyle M''}
为圆心的圆
k
3
{\displaystyle k_{3}}
中应用弦定理可得:
A
″
S
¯
⋅
C
″
S
¯
=
B
S
¯
⋅
D
S
¯
⇒
{\displaystyle {\overline {A''S}}\cdot {\overline {C''S}}={\overline {BS}}\cdot {\overline {DS}}\Rightarrow }
b
:
a
=
C
″
S
¯
=
F
D
¯
=
B
S
¯
⋅
D
S
¯
A
″
S
¯
.
{\displaystyle b:a={\overline {C''S}}={\overline {FD}}={\frac {{\overline {BS}}\cdot {\overline {DS}}}{\overline {A''S}}}.}
另一种方法是利用截線定理 ,用尺规作全等三角形 。(图3)具体步骤如下:
图3
a
/
b
{\displaystyle a/b}
时的尺规作图构造
自点
A
{\displaystyle A}
引出第一条射线;
在该射线上,以
A
{\displaystyle A}
为起点,先截取长度为
1
{\displaystyle 1}
的线段
A
E
¯
{\displaystyle {\overline {AE}}}
,再截取长度为
b
{\displaystyle b}
的线段
A
B
¯
{\displaystyle {\overline {AB}}}
;
自点
B
{\displaystyle B}
出发,在与
A
B
¯
{\displaystyle {\overline {AB}}}
成任意角
α
{\displaystyle \alpha }
的方向上截取长度为
a
{\displaystyle a}
的线段
B
D
¯
{\displaystyle {\overline {BD}}}
;
过点
D
{\displaystyle D}
作自点
A
{\displaystyle A}
引出的第二条射线;
自点
E
{\displaystyle E}
作与
B
D
¯
{\displaystyle {\overline {BD}}}
平行 的直线,该直线与第二条射线的交点
C
{\displaystyle C}
所对应的线段
E
C
¯
{\displaystyle {\overline {EC}}}
即为所求商
a
b
{\displaystyle {\frac {a}{b}}}
的长度。
在标准数学体系中,除以零被定义为“未定义 ”操作,因其与“零乘任何有限数恒为零”相悖[ 4] ,计算器 输入此类表达式也会报错。但在零环 和轮代数 等高阶数学结构中,通过重新定义运算规则,除以零可被赋予特定意义。
y
=
1
x
{\displaystyle y={\tfrac {1}{x}}}
在平面直角坐标系 上的函数图象
部分人认为,这个问题应当赋予“∞ ”的解,因为经验表明,当分配者数量趨近於 零时,每个个体获得的量会趋向无限 。然而,这种直觉在数学体系中会引发根本性矛盾。
首先,引入“∞ ”这一“值”将导致环 及其算术体系的瓦解。具体表现为:
传统算术运算规则失效(如 ∞
−
{\displaystyle -}
∞ 未定义)
出现大量不定式 (如
1
:
0
{\displaystyle 1:0}
型表达式)
需另外建立特殊处理法则
其次,通过极限理论,在x=0处,函数
1
x
{\displaystyle {\tfrac {1}{x}}}
同时具有正负两个方向的发散趋势:
右极限:
lim
x
→
+
0
1
x
=
+
∞
.
{\displaystyle \lim _{x\to +0}{\tfrac {1}{x}}=+\infty .}
左极限:
lim
x
→
−
0
1
x
=
−
∞
.
{\displaystyle \lim _{x\to -0}{\tfrac {1}{x}}=-\infty .}
由于正负无穷不可比较,该点不存在传统意义上的极限值。
而且,在有理数集
Q
{\displaystyle \mathbb {Q} }
和实数集
R
{\displaystyle \mathbb {R} }
中,引入无穷大会破坏原有序关系,导致比较运算的逻辑 悖论 。
最后,直接承认方程
0
⋅
x
=
1
{\displaystyle 0\cdot x=1}
无解具有显著优势:
保持算术体系自洽性
避免引入矛盾性概念
更利于误差 处理(如编程 中的除零异常)
接受该方程无解的朴素事实,并借助分析学工具(如洛必达法则 )处理相关问题,是更为合理且自洽的解决方案。