给定两个整数u和v,他们分别有m和n为数字,且m≤n,用通常的乘法求uv的值需要O(mn)时间,可以将u和v均看作是有n位数字的大整数,用本章介绍的分治法,在O(n^(log3))时间内计算uv的值,当m<<n时,此法效率不高。设计算法在O(nlog2/3)时间计算uv的值
在O(n^(log3))时间内计算,把u,v分成两段,如分治法书中内容
uv=AC2^(n)+((A-B)(D-C)+AC+BD)2^(n/2)+BD
此时做三次n/2位的乘法,6次加减法和2次移位
此时符合第一问
第二问,当m比n小的多,就把n分成n/m段,所以就相当于一共有n/m次,计算m位乘法运算
由第一问得,O(n^(log3))为计算m为所需的
所以n/m次,就相城,化简为第二问所要求的算法时间复杂度