C 大整數運算

2021-10-03 16:09:40 字數 1358 閱讀 3310

大數的四則運算

在程式設計中,會遇到一些大整數的運算,這時候即使是long long型別也無法表示大整數。這個時候就可以用結構體來實現大整數的儲存,計算等操作。

定義乙個結構體來表示

#include

#include

using

namespace std;

struct bign

}

一般需要用字串讀入大整數,然後把字串另存到bign結構體中。由於在用字元陣列讀入大整數的時候,整數的高位會變為陣列的地位,因此這裡讓字串倒著給d賦值

//將字串轉化為bign型別來儲存

bign change

(char num)

return a;

}

//大數的比較

intcompare

(bign a, bign b)

return0;

//相等

}}

根據加法運算法則:將兩個數的對應位數相加(有進製加上進製),取個位作為該為的結果,十位作為新的進製

bign add

(bign a,bign b)

if(carry !=0)

return c;

}

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)}

高精度和低精度的乘法

低精度就是用基本資料型別儲存的資料。這裡的乘法規則是始終將低精度當做乙個整體來看待

bign multi

(bign a,

int b)

while

(carry !=0)

return c;

}

高精度和低精度除法

除法規則和平時計算規則是相同的。上一步的餘數乘以十加上該位作為被除數,將其與除數比較,如果不夠出,則該位的商為0,如果夠除,則商為對應的商,餘數即為對應的餘數。

bign divide

(bign a,

int b,

int& r)

}while

(c.len-

1>=

1&&c.d[c.len-1]

==0)return c;

}

超長整數運算(大整數運算)

問題描述 將形如1234567890123456789不能儲存在long變數中的數稱為超長整數或大整數。現討論大整數的加減乘除運算。思想方法 用陣列儲存超長整數,且為處理的簡單起見約定每個元素存放相同位的數字。如 每個元素存放4位。1 加法運算 void add int a,int b,int c ...

大整數運算

包括大整數的四則運算,一般都是用陣列來模擬大整數的,如果是每一位陣列只存一位數的話,空間浪費比較嚴重,所以這裡每一位陣列儲存4位數,所以是10000進製。加法 輸入 不超過兩百位的非負整數,可能有多餘的前導零。輸出 相加後的結果,不能有多餘的前導零 首先是一些基本的常量定義 define bir 1...

大整數運算

大整數加法 實現 include include intmain c lenc x while c lenc 0 lenc 1 lenc for int i lenc i 1 i printf d c i return0 大整數減法 實現 include include intmain b 205 ...