乘积位数上界的证明

先说要证明的结论:同进制下,一个 m 位的数乘一个 n 位的数,乘积不超过 m+n 位。

证法一:

下面用多项式表示 x 进制的数,数 a 有 m 位,数 b 有 n 位:

a = ∑ i = 0 m − 1 a i x i ( 0 ≤ a i &lt; x , a i ∈ N , a m − 1 = ̸ 0 ) a=\sum_{i=0}^{m-1}a_ix^i(0\le a_i&lt;x,a_i\in N,a_{m-1}=\not 0) a=i=0m1aixi(0ai<x,aiN,am1≠0)

b = ∑ i = 0 n − 1 b i x i ( 0 ≤ b i &lt; x , b i ∈ N , b n − 1 = ̸ 0 ) b=\sum_{i=0}^{n-1}b_ix^i(0\le b_i&lt;x,b_i\in N,b_{n-1}=\not 0) b=i=0n1bixi(0bi<x,biN,bn1≠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} ab=i=0m1j=0n1aibjxi+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=0m1(x1)xi,b=i=0n1(x1)xi

易知: a ⋅ b &lt; ( a + 1 ) ⋅ b a\cdot b&lt;(a+1)\cdot b ab<(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=xmi=0n1(x1)xi=i=0n1(x1)xm+i

容易看出 ∑ i = 0 n − 1 ( x − 1 ) ⋅ x m + i \sum_{i=0}^{n-1}(x-1)\cdot x^{m+i} i=0n1(x1)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+ba+ba+b+1

而一个 x 进制的数 a,其位数为 ⌊ log ⁡ x a ⌋ + 1 \lfloor{\log_x}^a\rfloor+1 logxa+1
假设有 c = a ⋅ b c=a\cdot b c=ab,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=logxab+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+1logxa+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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值