BigInteger 用法

今天在写 RSA,又用到了java.math.BigInteger1,总结一下常用的用法。(写完才发现 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)

    返回一个值为valBigInteger

  • 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

参考资料


  1. BigInteger (Java SE 14 & JDK 14)↩︎