A. 分治的大整数乘法
通常,在分析一个算法的计算复杂性时,一般将加法和乘法运算当作是基本运算来处理,即将执行一次加法或乘法运算所需的计算时间,看作一个仅仅取决于计算机硬件处理速度的常数。
然而,在有些情况下,需要处理数值很大的整数,这些数值无法在计算机硬件能直接表示的范围内进行处理。如果要精确地表示大整数的数值并在计算结果中要求精确地得到所有位数上的数字,就必须用软件的方法来实现大整数的算术运算,即用分治法实现大整数的运算。另外,分治法实现大整数运算,可以大大提高运算效率。
设两个n(na,nb)位d进制数A、B相乘:
当位数n为偶数时,将数拆分为两段等长的数段,高位段为H,低位段为L,则有
A=Ha*d^(n/2)+La B=Hb*d^(n/2)+Lb
当位数n为奇数时,可在数的首位前添0,使数的位数为偶数,然后将数拆分为两段等长的数段。
例如,计算2进制数1010与1110的乘积。步骤如下:
(1):1010=10*2^(2)+10 1110=11*2^(2)+10
(2):1010*1110=(10*2^(2)+10)*(11*2^(2)+10)=10*11*2^(4)+10*11*2^(2)+10*10*2^(2)+10*10
(3):1010*1110=(1*2^(1)+0)*(1*2^(1)+1)*2^(4)+(1*2^(1)+0)*(1*2^(1)+1)*2^(2)+(1*2^(1)+0)*(1*2^(1)+0)*2^(2)+(1*2^(1)+0)*(1*2^(1)+0)=2*3*16+2*3*4+2*2*4+2*2=140
B. 从二乘到99,的简便算法是什么
九九乘法表的简便算法如下:
1. 先列出1-9的数字,作为乘法表的行和列的标号。
2. 从2开始,依次将每个数字作为第一列的数字。
3. 每行的第二个数字是该行数字序号减一的结果。
4. 自第三列开始,每列的数字是列序号乘以行序号的结果。
这种算法可以大大减少计算量和记忆负担,使乘法表的学习更加高效和简便。