首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigInteger取模'%‘运算&小于/大于运算

BigInteger取模'%‘运算&小于/大于运算
EN

Stack Overflow用户
提问于 2013-03-01 23:52:36
回答 2查看 7K关注 0票数 2

嗨,我有一个算法,其中我需要将操作应用于BigInt。

我知道可以使用数学类来操作BigInt,例如:

代码语言:javascript
复制
import java.math.*;

BigInteger a;
BigInteger b = BigInteger.ZERO;
BigInteger c = BigInteger.ONE;
BigInteger d = new BigInteger ("3");
BigInteger e = BigInteger.valueOf(5);

a.multiply(b);
a.add(b);
a.substract(b);
a.divide(b);

我需要能够申请超过一段时间的条件。

代码语言:javascript
复制
while (a > 0) {

这给了我一个语法错误,说“二元运算符'>‘的操作数类型不好,第一种类型: java.math.BigInteger,第二种类型: int。

我还需要能够将模(%)运算符应用于BigInteger。

代码语言:javascript
复制
b = a % c;

有没有人能建议一种这样做的方法?

如果没有解决方案,那么我将不得不以某种方式使用reduce函数将我的BigInteger操作为一个唯一的长整型(这并不理想)。

Silverzx。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-02 00:01:58

要比较BigInteger,请使用BigInteger.compareTo

代码语言:javascript
复制
while(a.compareTo(BigInteger.ZERO) > 0)
    //...

对于模(%),使用BigInteger.mod

代码语言:javascript
复制
BigInteger blah = a.mod(b);
票数 7
EN

Stack Overflow用户

发布于 2013-03-02 00:00:19

为了比较BigIntegers,您可以使用compareTo,但在特殊情况下,当您将其与0进行比较时,signum方法也可以完成这项工作(而且可能会更快一些)。至于取给定除法的余数,您可以使用mod方法(这里是更好的选项),或者使用divideAndRemainder,它返回一个同时包含除法和余数结果的数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15161639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档