Java 使用BigInteger乘法运算符

Java 使用BigInteger乘法运算符,java,biginteger,Java,Biginteger,我想知道是否有办法将biginger变量相乘,因为*运算符不能应用于biginger 所以我想知道,如果不使用*运算符,是否可以将两个大整数相乘。您使用乘法()方法如下: BigInteger int1 = new BigInteger("131224324234234234234313"); BigInteger int2 = new BigInteger("13345663456346435648234313"); BigInteger result = int1.multiply(int

我想知道是否有办法将
biginger
变量相乘,因为
*
运算符不能应用于
biginger

所以我想知道,如果不使用
*
运算符,是否可以将两个
大整数相乘。

您使用
乘法()
方法如下:

BigInteger int1 = new BigInteger("131224324234234234234313");
BigInteger int2 = new BigInteger("13345663456346435648234313");
BigInteger result =  int1.multiply(int2) 
我刚才应该指出,
biginger
是不可变的。因此,操作的任何结果都必须存储到变量中。运算符或操作数永远不会更改。

您可以在BigInteger中使用乘法(BigInteger)方法。因此:

BigInteger result = someBigInt.multiply(anotherBigInt);

更简单的实施方法:

int i = 5;
BigInteger bigInt = new BigInteger("12345678901");
BigInteger result = bigInt.multiply(BigInteger.valueOf(i))

将这些特定因素相乘的结果

A:131224324313

B:13345663456346435648234313

可能是这个(我希望我是正确的):

R:175127566851657578779521175117077134115968581969

两者都被认为是两个正整数。以及使用的技术 这是Karatsuba的方法吗


int ab=(mul1)*10^n+(mul3-mul1-mul2)*10^n/2+mul2

如果这太烦人了,您可以在Groovy中正确映射操作符。我正在实现一些数学类(比如BigRational),Java第一次看起来非常麻烦——尽管我通常喜欢Java,但我不得不承认它并不是解决所有编程问题的答案。如果您需要Java的速度,但希望获得诸如运算符重载之类的优势,您也可以尝试Scala。在最后一行代码片段中,作为传递给乘法的参数,不仅仅是“int2”就足够了吗?毕竟这是一个大整数。@amar谢谢你指出这一点。我不确定我在想什么。可能是复制粘贴错误。操作员仅在对象能够通过时才对其进行操作。唯一能做到这一点的是基本类型的类表示(int->Integer)。这并不能解决这个问题。