大整型數加法 乘法類

2021-09-26 20:22:47 字數 2265 閱讀 8977

大整型數一般是4個位元組,但一般會遇到超大數的運算,那麼系統提供的int、long就不夠用了。因此,必須自定義大整型類,**如下所示。

(1)如何建立及描述大整型數。乙個方案是通過字串輸入建立,通過解析字串,把每位存入stl提供的容器中。由於會遇到進製問題,即對容器頭進行進製插入操作,從這一點看deque雙端佇列更好。

(2)關於大整形的加法演算法,即類中的add函式。

定義結果大整型變數result

求被加數字與加數字數差n

if n>=0 then

從高位開始,加數所有位與被加數對應為相加,每位結果和存入result後面

把被加數多餘位存入result前面

else

從高位開始,被加數所有位與加數對應為相加,每位結果和存入result後面

把加數多餘位存入result前面

endif

result

返回給result給呼叫者

類中adjust函式進行大整型數字置調整,保證每位小於10。用表意形式說明如下:設mybignum1 = ,mybignum2 = ,經過上述add函式1-9步結果為mybignum result = ,兩位數都大於10,因此必須呼叫adjust調整函式,使最終結果為result = 。adjust演算法如下

獲得待調整大整型數容器的長的nsize

for 從最低位開始到次高位,迴圈依次調整每一位

若當前值小於10,轉到2

當前位的值等於當前值對10取餘

利用while迴圈把進製值依次加到前面位的值中

end for

if 最高位置大於10

最高位值等於當前值對10取餘

改變容器的大小,利用while迴圈把進製值依次填充新加位的值

endif

(3)關於大整形的乘法演算法,即類中的multiply函式。用表意形式說明如下:設mybignum1 = ,mybignum2 = ,mybignum3 = mybignum1 * mybignum2 = * 7 + * 6 + * 5。即被乘數後面補充適當的0後與乘數每位向乘後再相加。adjust演算法如下

定義結果大整型數result,初始值為0,用於累加

定義臨時大整型數變數mid

for i=0,i《乘數字數,i++

mid

mid尾部新增適當個數0元素

mid中每位值等於mid中每位當前值乘以乘數從低位開始的第i位數

result

end for

返回result給呼叫者

**

# include# include # include # include # include # includeusing namespace std;

class mybigdata

mybigdata(string strnum) //通過字串建立大整數

deque::iterator begin() //開始迭代指標

deque::iterator end() //迭代止指標

int size() //容器大小

back_insert_iterator>back_inserter()

void push_front(int n) //前插入元素

void push_back(int n) //後插入元素

void adjust() //調整使容器的每位整型元素值都小於10

int value = v[0]; //處理最高位

if (value >= 10)

}nsize = v.size();

} mybigdata add(mybigdata&m)

}else

}result.adjust(); //結果調整

return result;

} mybigdata mutiply(mybigdata &m)

transform(mid.begin(),mid.end(),mid.begin(),bind2nd(multiplies(),*(m.begin()+i)));//被乘數分別乘以每一位乘數

result = mid.add(result); //分項之和累加

} return result;

}};int main()

執行結果

大整數問題,乘法,加法,階乘

大整數相乘 c i j a i b j 陣列的每一位相乘然後相加,並得到最終結果 再考慮進製問題 include include define size 50 int a size b size c size 2 void big multi int a,int b,int c c k 0 prin...

js 大整數加法 乘法 除法

有一定的程式設計經驗的人都知道,當我們對資料操作的時候,若資料過大,計算機將這個大數從十進位制的轉為二進位制的,是沒有那個型別的放的了的,因此,我們經常將乙個大數轉化為字串來操作。接下來我將演示大整數的加法 乘法 除法操作。附 不考慮負數 思路 我們將兩個數進行逆序轉換,然後按位進行相加,將相加的結...

c 大整數加法 減法 乘法

大整數加法 大整數減法 大整數乘法 大整數除法 還未寫 大整數的加法 先對資料進行預處理是兩個大整數的位數相等,位數少的那個數在高位補0,使兩數的位數相等,便於計算資料的進製,只需要在函式呼叫的結尾檢查一下最高為是否存在進製的情況,如果需要進製則只需要在最後將進製的數加入到返回值中。加法是對兩個數從...