【问题标题】:Using BigInteger Multiply operator使用 BigInteger 乘法运算符
【发布时间】:2017-01-07 05:44:16
【问题描述】:

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

所以我想知道是否可以在不使用 * 运算符的情况下将两个 BigIntegers 相乘。

【问题讨论】:

  • 操作员只对可以通过autoboxing的对象进行操作。唯一可以做到这一点的是原始类型(int -> Integer)的类表示。

标签: java biginteger


【解决方案1】:

你像这样使用BigIntegersmultiply()方法:

BigInteger int1 = new BigInteger("131224324234234234234313");
BigInteger int2 = new BigInteger("13345663456346435648234313");
BigInteger result =  int1.multiply(int2) 

我刚才应该指出BigInteger 是不可变的。因此,操作的任何结果都必须存储到变量中。运算符或操作数永远不会改变。

【讨论】:

  • 如果这太烦人了,您可以在正确映射运算符的 Groovy 中进行工作。我正在实现一些数学类(一个是 BigRational),Java 似乎第一次显得非常繁琐——尽管我通常喜欢 Java,但我不得不承认它并不是所有编程问题的答案。如果你需要 Java 的速度,但又想要运算符重载等优势,你也可以试试 Scala。
  • 在最后的 sn-p 行中,“int2”是否足以作为传递给乘法的参数?毕竟它是一个 BigInteger。
  • @amar 感谢您指出这一点。我不确定我在想什么。可能是复制粘贴错误。
【解决方案2】:

更简单的实现方式:

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

【讨论】:

    【解决方案3】:

    您可以使用 BigInteger 中的 multiply(BigInteger) 方法。所以:

    BigInteger result = someBigInt.multiply(anotherBigInt);
    

    BigInteger in Java API

    【讨论】:

      【解决方案4】:

      这些特定因素相乘的结果

      答:131224324234234234234313

      B:13345663456346435648234313

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

      R: 1751275668516575787795211751170772134115968581969

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

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

      【讨论】:

      • 这并没有解决问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多