BigInteger 用法
今天在写 RSA,又用到了java.math.BigInteger
类1,总结一下常用的用法。(写完才发现 gcd 和求逆方法都有了)
BigInteger 介绍
继承自Number
类,可表示任意长度的整数。BigInteger
用等号可以直接进行复制,而不是引用地址。
构造方法
public BigInteger(int numBits, Random rnd)
构造一个随机生成的
numBits
位的BigInteger
。public BigInteger(String val)
将十进制字符串表示的
val
转为BigInteger
。public BigInteger(String val, int radix)
将
radix
进制字符串表示的val
转为BigInteger
。
常用方法
public BigInteger add(BigInteger val)
加法。
public BigInteger subtract(BigInteger val)
减法。
public BigInteger multiply(BigInteger val)
乘法。
public BigInteger divide(BigInteger val)
除法。
public BigInteger[] divideAndRemainder(BigInteger val)
带余除法,返回商和余数。
public BigInteger remainder(BigInteger val)
求余数。
public BigInteger mod(BigInteger m)
取模,注意和取余的区别。
public BigInteger pow(int exponent)
幂运算。
public BigInteger gcd(BigInteger val)
求最大公因子。
public BigInteger abs()
取绝对值。
public BigInteger negate()
取相反数。
public BigInteger modPow(BigInteger exponent, BigInteger m)
模幂。
public BigInteger modInverse(BigInteger m)
求逆元。
public BigInteger shiftLeft(int n)
左移
n
位。public BigInteger shiftRight(int n)
右移
n
位。public int bitLength()
返回二进制位数,不包括符号位。
public static BigInteger valueOf(long val)
返回一个值为
val
的BigInteger
。public static BigInteger probablePrime(int bitLength, Random rnd)
返回一个
bitLength
位的可能是素数的BigInteger
。public boolean isProbablePrime(int certainty)
判断是否可能为素数,素数准确率为\(1-1/2^{certainty}\)。
public int compareTo(BigInteger val)
比较大小。小于返回
-1
,相等返回0
,大于返回1
。public boolean equals(Object x)
判断是否相等。
public String toString(int radix)
返回以
radix
进制表示的字符串。若不传入参数,默认为十进制。public int intValue()
将
BigInteger
转为int
。