Schonhage-Strassen算法用于将两个数字相乘。SchonhageStrassen算法是用于大整数的渐近快速乘法算法。实际上,对于超过2 215至2 217(十进制10,000到40,000)的数字,Schonhage-Strassen算法开始胜过karatsuba和Toom-CooK等旧方法。
算法Begin
function noOfDigit( x)
Declare a variable n and assign n = 0;
while (x > 0)
x = x /10
Increment n
return n
End
Begin
Algorithm for schonhageStrassenMultiplication:
schonhageStrassenMultiplication(a, b, n, m)
define an array linearConvolution[n + m - 1]
for i = 0 to (n + m - 1)-1
linearConvolution[i] = 0;
long p = a
for i = 0 to m-1
a = p
for j = 0 to n-1
linearConvolution[i + j] += (b mod 10) * (a mod 10);
a /= 10
b /= 10
for i = (n + m - 2) to 0
Print linearConvolution[i]
long product = 0