先说要证明的结论:同进制下,一个 m 位的数乘一个 n 位的数,乘积不超过 m+n 位。
证法一:
下面用多项式表示 x 进制的数,数 a 有 m 位,数 b 有 n 位:
a = ∑ i = 0 m − 1 a i x i ( 0 ≤ a i < x , a i ∈ N , a m − 1 = ̸ 0 ) a=\sum_{i=0}^{m-1}a_ix^i(0\le a_i<x,a_i\in N,a_{m-1}=\not 0) a=∑i=0m−1aixi(0≤ai<x,ai∈N,am−1≠0)
b = ∑ i = 0 n − 1 b i x i ( 0 ≤ b i < x , b i ∈ N , b n − 1 = ̸ 0 ) b=\sum_{i=0}^{n-1}b_ix^i(0\le b_i<x,b_i\in N,b_{n-1}=\not 0) b=∑i=0n−1bixi(0≤bi<x,bi∈N,bn−1≠0)
根据多项式的乘积运算可得: a ⋅ b = ∑ i = 0 m − 1 ∑ j = 0 n − 1 a i b j x i + j a\cdot b=\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}a_ib_jx^{i+j} a⋅b=∑i=0m−1∑j=0n−1aibjxi+j
因为这个结果并没有进位,所以看不出两数积的位数,但可以知道至少有 m+n-1 位。
现在考虑 a,b 都取最大值的情况,其乘积结果也是最大的,此时取最大位数:
令 a = ∑ i = 0 m − 1 ( x − 1 ) x i , b = ∑ i = 0 n − 1 ( x − 1 ) x i a=\sum_{i=0}^{m-1}(x-1)x^i,b=\sum_{i=0}^{n-1}(x-1)x^i a=∑i=0m−1(x−1)xi,b=∑i=0n−1(x−1)xi
易知: a ⋅ b < ( a + 1 ) ⋅ b a\cdot b<(a+1)\cdot b a⋅b<(a+1)⋅b
而 ( a + 1 ) ⋅ b = x m ⋅ ∑ i = 0 n − 1 ( x − 1 ) ⋅ x i = ∑ i = 0 n − 1 ( x − 1 ) ⋅ x m + i (a+1)\cdot b=x^m\cdot \sum_{i=0}^{n-1}(x-1)\cdot x^i=\sum_{i=0}^{n-1}(x-1)\cdot x^{m+i} (a+1)⋅b=xm⋅∑i=0n−1(x−1)⋅xi=∑i=0n−1(x−1)⋅xm+i
容易看出 ∑ i = 0 n − 1 ( x − 1 ) ⋅ x m + i \sum_{i=0}^{n-1}(x-1)\cdot x^{m+i} ∑i=0n−1(x−1)⋅xm+i(不存在进位问题)是一个 m+n 位的数,所以一个 m 位的数乘一个 n 位的数,乘积不可能超过 m+n 位。
证法二:
首先有不等式成立: ⌊ a ⌋ + ⌊ b ⌋ ≤ ⌊ a + b ⌋ ≤ ⌊ a ⌋ + ⌊ b ⌋ + 1 \lfloor a\rfloor+\lfloor b\rfloor\le\lfloor a+b\rfloor\le\lfloor a\rfloor+\lfloor b\rfloor+1 ⌊a⌋+⌊b⌋≤⌊a+b⌋≤⌊a⌋+⌊b⌋+1
而一个 x 进制的数 a,其位数为
⌊
log
x
a
⌋
+
1
\lfloor{\log_x}^a\rfloor+1
⌊logxa⌋+1。
假设有
c
=
a
⋅
b
c=a\cdot b
c=a⋅b,a 的位数为 m,b 的位数为 n。
数 c 的位数为 ⌊ log x c ⌋ + 1 = ⌊ log x a ⋅ b ⌋ + 1 = ⌊ log x a + log x b ⌋ + 1 \lfloor{\log_x}^c\rfloor+1=\lfloor{\log_x}^{a\cdot b}\rfloor+1=\lfloor{\log_x}^a+{\log_x}^b\rfloor+1 ⌊logxc⌋+1=⌊logxa⋅b⌋+1=⌊logxa+logxb⌋+1
由上面的不等式可得 ⌊ log x a + log x b ⌋ + 1 ≤ ⌊ log x a ⌋ + 1 + ⌊ log x b ⌋ + 1 \lfloor{\log_x}^a+{\log_x}^b\rfloor+1\le\lfloor{\log_x}^a\rfloor+1+\lfloor{\log_x}^b\rfloor+1 ⌊logxa+logxb⌋+1≤⌊logxa⌋+1+⌊logxb⌋+1
又 ⌊ log x a ⌋ + 1 = m , ⌊ log x b ⌋ + 1 = n \lfloor{\log_x}^a\rfloor+1=m,\lfloor{\log_x}^b\rfloor+1=n ⌊logxa⌋+1=m,⌊logxb⌋+1=n
所以乘积 c 的位数不超过 m+n。