大數乘法與大數加法 java實現

2021-07-14 03:08:35 字數 1424 閱讀 8987

最近碰到大數乘法與大數加法的需求,如果直接用int型別會溢位。於是自己寫了個大數乘法與大數加法的**,就當自己練練手了。

大數加法的邏輯相對乘法稍微簡單一些。先將輸入的兩個字串逆序生成字元陣列,然後相同位上的字元相加儲存在乙個結果陣列中。最後遍歷結果陣列,如果當前位的結果大於或等於10,則先將當前位的數值除以10加入下一位,當前位的值為取10的模。

看**如下:

package leilei.bit.edu.bignum;

public class allnumadd

} stringbuilder sb = new stringbuilder();

if (result[maxlen] != 0)

for(int i=maxlen-1; i>=0; i--)

return sb.tostring(); }

public static void main(string args)

}

**執行結果為:

ret is: 1234600000
大數乘法的邏輯相對加法稍微複雜一些。首先也先將輸入的兩個字串逆序生成字元陣列,假設兩個字串分別為a、b,則儲存結果的陣列長度為len(a)+len(b)。a的第i位於b的第j位的乘積,儲存在結果陣列的第i+j位上。將所有的計算結果計算完畢以後,再遍歷結果陣列進行進製處理。

package leilei.bit.edu.bignum;

public class multiply

if(signb == '-' && signa != '-')

char a = new stringbuilder(s1).reverse().tostring().tochararray();

char b = new stringbuilder(s2).reverse().tostring().tochararray();

int lena = a.length;

int lenb = b.length;

//結果陣列

int maxlen = lena + lenb;

int ret = new int[maxlen];

//每一位分別相乘

for(int i=0; i= 10)

} //如果第一位為0,不輸出

stringbuilder sb = new stringbuilder();

if(ret[ret.length-1] != 0)

for(int i=ret.length-2; i>=0; i--)

if (sign == '-')

return sb.tostring(); }

public static void main(string args)

}

大數乘法 大數加法實現

include include include include include include include include using namespace std 實現兩個數的加法 判斷乙個字串是否為有效的數 bool isvalidnumber const string s if 1 len ...

大數加法,大數乘法

include include include typedef struct node pnode 函式宣告 int multiply char strmultipliera,char strmultiplierb,char strrst pnode initlist char strmultipl...

大數問題 大數加法 與 大數乘法 最簡單大數乘法

大數加法很簡單,大叔乘法只是以大數加法為基礎的,光從難度來說,兩者差不多。先舉乙個簡單的例子 所以乘法就是每一位個位數相乘再乘以多少次方就可以了,這個多少次就是兩者的陣列位置的索引相加。看看關鍵 for int i 0 i alen i else result plus result,c heigh...