2011-09-14 74 views
1

Theres a BigInt類和兩個對象num1和num2。我有一個實驗室任務,我必須乘以num1和num2。它們可以是最多50位的整數。該類有一個大小和一個digit.size是輸入的整數中的數字位數,digit是一個包含整數的數組。Java將兩個BigInt對象相乘

我必須寫倍增這兩個對象,並返回該產品的方法。我有點困惑如何開始這個。我見過有兩個循環和一個基地的例子。我不知道該基地會用於什麼。

任何指針在正確的方向將不勝感激。

+1

你知道的[長乘法(http://en.wikipedia.org/wiki/Long_multiplication#Long_multiplication)? –

+0

http://stackoverflow.com/questions/2120493/how-to-write-own-multiplication-of-big-numbers –

+1

我想用'的BigInteger#multiply'被認爲是作弊? –

回答

2

我假設的基礎是十進制/十六進制等,爲更廣泛的實現......

一般情況下,你需要使用正常長乘法,就像在學校裏學到。

還要注意,結果可能是多達100位長度 - 如果你只需要50個最顯著,你可以優化長乘法位(幾乎縮短一半)。

+1

注意,違背了正常的長除法學會了學校最好將數據寫入輸出數組,而不是創建中間數組。使算法更簡單,但仍然非常基本 - Knuth在少量的MIX組合中實現了這一點;)提醒:n位和m位數的任何乘法將至多有m + n個位置。 – Voo