其做法和小學學的有一點不一樣。以 147 x 35 為例,這裡把 147 視為
高精度 bign(自定義的結構下面**會提到) 型別,而 35 視為 int 型別, 並且在下面的過程中, 始終將 35 作為乙個整體看待。
7x35=245, 取個位數 5 作為該位結果, 高位部分 24 作為進製。
4 x 35 = 140, 加上進製 24, 得 164, 取個位數 4 為該位結果,高位部分 16 作為進製。
1 x 35 =35, 加上進製 16, 得 51, 取個位數 1 為該位結果,高位部分 5 作為進製。
沒的乘了, 此時進製還不為0, 就把進製5直接作為結果的高位。
對某一步來說是這麼乙個步驟:取 bign 的某位與 int 型整體相乘, 再與進製相加, 所得結果的個位數作為該位結果, 高位部分作為新的進製。
#include
using
namespace std;
struct bign };
bign change
(char str)
intcompare
(bign a,bign b)
return0;
}}bign sub
(bign a,bign b)
c.d[c.len++
]=a.d[i]
-b.d[i]
;//減法結果為當前位結果
}while
(c.len-
1>=
1&&c.d[c.len-1]
==0)return c;
}void
print
(bign a)
intmain()
其中的bign儲存方法可以連線:大整數儲存和加法
如果a和b中存在負數, 需要先記錄下其負號, 然後取它們的絕對值代入函式。
大整數乘法
參考 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...