Java 有没有比Math.pow更好(更正确)的方法来计算某些幂的模量?

Java 有没有比Math.pow更好(更正确)的方法来计算某些幂的模量?,java,math,floating-point,Java,Math,Floating Point,考虑以下简单的Java代码块: public static void main(String[] args) { int a = 7; double exp; for (int i=0; i<71; ++i) { exp = Math.pow(a,i) % 71; if (exp == 59.0) System.out.printf("k=%d: %.0f%n", i, exp); } } publicstaticvoidmain(字符串[]a

考虑以下简单的Java代码块:

public static void main(String[] args) {
  int a = 7;
  double exp;
  for (int i=0; i<71; ++i) {
    exp = Math.pow(a,i) % 71;
    if (exp == 59.0)
      System.out.printf("k=%d: %.0f%n", i, exp);
  }
}
publicstaticvoidmain(字符串[]args){
INTA=7;
双经验;

对于(inti=0;i来说,不需要编写自己的方法的最简单正确的权宜之计可能是

BigInteger.valueOf(a)
    .modPow(BigInteger.valueOf(i), BigInteger.valueOf(71))
    .intValue();

不需要编写自己的方法的最简单正确的权宜之计可能是

BigInteger.valueOf(a)
    .modPow(BigInteger.valueOf(i), BigInteger.valueOf(71))
    .intValue();
如果要避免“大计算”,则可以在每次乘法后执行模运算:

public static void main(String[] args)
{
    for (int i=0,a=1; i<71; i++, a = (a*7)%71)
    {
        if (a == 59)
            System.out.println("k = " + i);
    }
}
publicstaticvoidmain(字符串[]args)
{
对于(int i=0,a=1;i如果要避免“大计算”,则可以在每次乘法后执行模运算:

public static void main(String[] args)
{
    for (int i=0,a=1; i<71; i++, a = (a*7)%71)
    {
        if (a == 59)
            System.out.println("k = " + i);
    }
}
publicstaticvoidmain(字符串[]args)
{

对于(int i=0,a=1;i有趣。总是很高兴找到新方法。我甚至不知道Java有一个
BigInteger
,就这一点而言,它有这样的方法..有趣。总是很高兴找到新方法。我甚至不知道Java有一个
BigInteger
,就这一点而言,它有这样的方法。。