大整數運算

2021-10-10 14:47:25 字數 1492 閱讀 3794

struct bign

};

bign change

(char str)

return a;

}

/*比較a和b大小,a大 相等 小分別返回1 0 -1*/

intcompare

(bign a, bign b)

else

if(a.len//a b 長度相等

else

else

if(a.d[i]

return2;

//兩數相等

}}

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)return c;

}

/*高精度a*b*/

bign multi

(bign a,

int b)

//和加法不一樣 乘法的進製可能不止一位,因此用while

while

(carry!=0)

return c;

}

/*高精度a/b, r為餘數*/

bign divide

(bign a,

int b,

int&r)

else

}//去除高位的0,同時至少保留一位最低位

while

(c.len-

1>=

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

==0)return c;

}

#include

#include

struct bign};

/*將整數轉換為bign*/

bign change

(char str)

return a;

}/*高精度a+b*/

bign add

(bign a, bign b)

if(carry!=0)

return c;

}/*輸出bign*/

void

print

(bign a)

}int

main()

減法、乘法、除法照葫蘆畫瓢即可,需要注意減法時需先比較兩個數的大小,如果被減數小於減數,需要交換兩個變數,然後輸出負號,再使用sub函式

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

問題描述 將形如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 ...