任意長度的兩個正整數相乘

2021-06-20 09:56:07 字數 1079 閱讀 9118

兩個大數相乘:char* multiply(char*,char*)。給了兩個字串,每個都是代表了乙個很長的10進製表示的數, 比如 string str1 = "23456789009877666555544444"; string str2 = "346587436598437594375943875943875", 最後求出它們的乘積。 不用jdk的數**算包biginteger.或者類似的包。

這是乙個大數相乘為題,大家都知道int、long等變數表示的數值有限,當出現超過這個限度的數值計算的時候,就是乙個大數的計算問題,就需要用到陣列了。

大致思想就是,把改進制的先儲存,先不進製,儲存到陣列中,計算出"每一位「的值之後,在從"最低位"開始往高位進製。

之前寫過c的**:

[cpp]view plain

copy

print

?/*問題描述:當兩個數比較大的時候就會出現溢位的現象。

解決方案:利用陣列來儲存結果。*/

#include 

#include 

#define max 100

unsigned arr1[max+10];  

unsigned arr2[max+10];  

unsigned result[max*2+10];  

char str1[max+10];  

char str2[max+10];  

int main()  

j = 0;  

for(i = len2-1; i >= 0; i--)  

// for(i = 0; i 

}  "color: #ff0000">//進製

for(i = 0; i 

}  //輸出結果(注意輸出的時候把陣列最後的一連串的0全部去掉)

for(i = max*2; i >= 0; i--)  

else

if(result[i])  

}  // if(!flag)  

printf("0");  

printf("\n");  

return 0;  

}  

演算法 兩個超大整數相乘

處理問題時有時候會遇到兩個超大數相乘,那麼他們的乘積整數就有可能存不下。說一下各個整型的範圍 型別說明 名稱 位元組數範圍 int4 2147483648 2147483647 short int 2 32768 32767 long 4 2147483648 2147483647 long lon...

求兩個正整數的乘積

給你兩個正整數 aa 和 bb,1 a,b 10 1 a,b 102000 求 aa 與 bb 的乘積。包括一行,兩個正整數aa 和 bb,1 a,b 10 1 a,b 102000 一行,乙個正整數表示乘積。輸入 1複製 3 7 輸出 1複製 21 解題思路 1.通過歸納得出乘法對應的位置兩乘數和...

程式設計實現兩個正整數的除法

程式設計實現兩個正整數的除法,當然不能用除法操作符。常規的想,100 7,可以試著7 1,7 2,7 3,7 14做,但這樣子太慢了。於是有人說以2的指數次遞增,也就是7 1,7 2,7 4,7 8,好了,因為7 16 100,所以這個時候就100 7 8 44接著下一次迴圈。int div con...