大整數乘法
分析演算法計算複雜性時,加法乘法當做基本運算來處理,即一次加法或者乘法當做乙個僅取決於計算機硬體處理速度的常數。
正常的二進位制整數x,y要用o(n2)才能算出。如果分割為兩段,
x=a2^(n/2)+b,y=c2^(n/2)+d。
xy = (a2^(n/2)+b)(c2^(n/2)+d)=ac2^n+(ad+bc)2^(n/2)+bd
要進行4次n/2位整數的乘法,以及3次不超過2n為的整數加法,好要做2次移位。
t(n) = o(n^2);
xy=ac2^n+((a-b)(d-c)+ac+bd)2^(n/2)+bd
僅作3次n/2位整數的乘法,6次加減法,2次移位..
時間複雜度變為t(n)=o(n^1.59)
posted @
2012-10-15 21:52
xingoo 閱讀(
...)
編輯收藏
大整數乘法
參考 http hi.baidu.com operationsystem blog item 6e45dd1af1acadf3ae51330b.html 在計算機中,長整型 long int 變數的範圍是 2147483648 至 2147483647,因此若用長整型變數做乘法運算,乘積最多不能超過...
大整數乘法
問題描述 by 計算機演算法設計與分析 王曉東 p17 通常,在分析乙個演算法的計算複雜性時,都將加法和乘法運算當作是基本運算來處理,即將執行一次加法或乘法運算所需的計算時間當作乙個僅取決於計算機硬體處理速度的常數。這個假定僅在計算機硬體能對參加運算的整數直接表示和處理時才是合理的。然而,在某些情況...
大整數乘法。
include using namespace std int multi int num1,int size1,int num2,int size2 int size size1 size2 int ret new int size int i 0 for i 0 iret i 0 for i 0...