大整數四則運算

2021-10-03 05:49:55 字數 1342 閱讀 9185

電腦可以處理很大的數。

但是更大的數字運算由於資料型別占有的有限並不能表示出來,所以需要對很大的數字進行大整數處理,光是聽著就感覺令人心潮澎湃呢。

核心思想:陣列存數,乙個單元存一位

下面是大整數儲存,比較的模板:

struct bign};

bign change

(char str)

return a;

}//比較兩個bign的大小

intcompare

(bign a,bign b)

return0;

}}

高精度加法

原理和小學學的加法沒啥區別,由於數在陣列中是逆序儲存的,所以從 i=0 是最低位開始處理的。

bign add

(bign a,bign b)

if(carry!=0)

return c;

}

高精度減法

由於高精度減法只能大數減小數,小數減無法得到正解。

這時,就需要乙個比較函式cmp來比較兩個數的大小,若

減數》=被減數

則輸出》=0的整數,若

減數《被減數

則需要先輸出乙個負號,再把sub函式的變數顛倒一下。

int

cmp(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;

}

高精度與低精度乘法(大整數和整數乘)

注意如果有負數,需要取絕對值計算再加上負號

bign multi

(bign a,

int b)

while

(carry!=0)

return c;

}

高精度與低精度除法(大整數除整數)
//被除數的每一位和商的每一位是一一對應的,因此先令長度相等 

for(

int i=a.len-

1;i>=

0;i--)}

while

(c.len-

1>=

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

==0)return c;

}

大整數四則運算

儲存方式 規定 整數的高位儲存在陣列的高位,整數的低位儲存在陣列的低位。例如 235813,則d 0 3,d 1 1,d 2 8.此方式以此類推。但注意 通常輸入為字串str 0 2 str 1 3 str 2 5 讀入之後需要反轉一下。加法運算 模板 include include struct ...

大整數四則運算模板

1.大整數加法運算模板 總結步驟 將對應位上的數字和進製相加,得到的結果取個位數作為該位結果,取十位數作為新的進製。大整數加法 bign add bign a,bign b if carry 0 return c 2.大整數減法運算模板 總結步驟 對每一步,比較被減位和減位,如果不夠減,則令減位的高...

大整數的四則運算

由小學時候的加法運算可以歸納出對其中一位進行加法的步驟 將該位上的兩個數字和進製相加,得到的結果取個位數作為該位結果,取十位數作為新的進製。高精度加法的做法與此完全相同,可以直接來看實現的 程式 include include 定義乙個結構體儲存大整數 struct bign 將整數轉換為bign ...