公式计算不正确

Formula isn't Correctly Calculating

我想弄清楚为什么以下计算不正确

 x = Math.pow(w,e);

当我在Java中计算时,我得到1075,但我应该得到779。

   int e = 17;
   int w = 803;
   int n = 2773;
   double x = 0;
        x = Math.pow(w,e) % n;
        System.out.println(x);

double浮点数有53位精度,不足以存储80317这样的大数的精确值。要在 Java 中进行模幂运算,您可以在 BigInteger 上使用 modPow 方法。

因为 (803^17) 是一个非常大的数字,所以您必须为此处使用的变量使用 BigInteger 数据类型,而不是 int 或 double 数据类型。我们不能将整数或双精度变量转换为 BigInteger 变量。

因此,程序将是:

import java.math.BigInteger;

public class JavaPow {

    public static void main(String[] args) 
    {
        BigInteger e = new BigInteger("17");
        BigInteger w = new BigInteger("803");
        BigInteger n = new BigInteger("2773");
        BigInteger x;
        x = w.modPow(e,n);
        System.out.println(x);
    }
}