我想知道是否有將BigInteger
變量乘以一起的方法,因爲*
運算符不能應用於BigInteger
。使用BigInteger乘法運算符
所以我想知道是否有可能將兩個BigIntegers
相乘而不使用*
算子。
我想知道是否有將BigInteger
變量乘以一起的方法,因爲*
運算符不能應用於BigInteger
。使用BigInteger乘法運算符
所以我想知道是否有可能將兩個BigIntegers
相乘而不使用*
算子。
你使用像BigInteger
smultiply()
方法,以便:
BigInteger int1 = new BigInteger("131224324234234234234313");
BigInteger int2 = new BigInteger("13345663456346435648234313");
BigInteger result = int1.multiply(int2)
我應該指出,前一陣子那BigInteger
是不可改變的。所以任何操作的結果都必須存儲到一個變量中。操作符或操作數從不改變。
如果這太煩人了,可以在Groovy中正確地映射操作符。我正在實現一些數學類(BigRational for one),並且第一次Java看起來非常麻煩 - 儘管我一般都喜歡Java,但我不得不承認,這不是每個編程問題的答案。如果你需要Java的速度,但想要運算符重載等優點,你也可以試試Scala。 – 2010-10-07 00:05:06
在最後的片段行中,不僅僅是「int2」就足以作爲傳遞給乘法的參數嗎?畢竟它是一個BigInteger。 – amar 2013-07-27 19:49:10
@amar感謝您指出。我不確定我在想什麼。可能是複製粘貼錯誤。 – jjnguy 2013-07-29 00:42:05
您可以使用BigInteger中的multiply(BigInteger)方法。所以:
BigInteger result = someBigInt.multiply(anotherBigInt);
更簡單的方法來實現:
int i = 5;
BigInteger bigInt = new BigInteger("12345678901");
BigInteger result = bigInt.multiply(BigInteger.valueOf(i))
結果乘以這些特定的因素
答:131224324234234234234313
B:13345663456346435648234313
可能是這一個(我希望我是正確的):
R:1751275668516575787795211751170772134115968581969
兩者都被認爲是兩個正整數。並且使用的技術是Karatsuba的方法
int ab =(mul1)* 10^n +(mul3-mul1-mul2)* 10^n/2 + mul2;
這並沒有解決這個問題。 – hotzst 2017-01-05 00:44:50
如果可以通過[自動裝箱](http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html),則操作員只能處理對象。唯一可以做到的是基本類型的類表示(int - > Integer)。 – 2013-07-29 01:12:16