乘积位数上界的证明

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/L__ear/article/details/96135716

先说要证明的结论:同进制下,一个 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)

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)

根据多项式的乘积运算可得: 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}

因为这个结果并没有进位,所以看不出两数积的位数,但可以知道至少有 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 b < ( a + 1 ) b a\cdot b<(a+1)\cdot 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}

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

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

由上面的不等式可得 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

log x a + 1 = m , log x b + 1 = n \lfloor{\log_x}^a\rfloor+1=m,\lfloor{\log_x}^b\rfloor+1=n

所以乘积 c 的位数不超过 m+n。

猜你喜欢

转载自blog.csdn.net/L__ear/article/details/96135716