java - 在Java中计算模数

标签 java mod

我不明白为什么 mod 的计算不正确, 我有 a=23b=86609c=17 其中 (d=a^c mod b)。所以根据计算器计算结果应该是16559 但我得到 49432?

public class Mod {

  public static void main(String[] args) {
    int a=23;
    int b=86609;
    int c=17;
    double d= (Math.pow(a,c)%b);
    System.out.print(d);
  }
}

最佳答案

问题不在于模数部分。一旦进入 pow 部分,就会得到错误的结果。

23^17 准确地说是 1.41050039560662968926103 × 10^23。看看 Java 认为它等于什么:

1.4105003956066297E23

显然这还不够精确。

这个问题的解决方案是BigInteger:

BigInteger a = new BigInteger("23");
BigInteger b = a.modPow(new BigInteger("17"), new BigInteger("86609"));
System.out.println(b);

记住导入java.math.BigInteger;!

关于java - 在Java中计算模数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45734942/

相关文章:

Kotlin 负模返回负值

math - XOR 和 mod 的交换性

c++ - 斐波那契模数 C++

c - 有符号整数模无符号整数会产生无意义的结果

java - struts2中的文件上传进度条?

java - 开发小型规则引擎的简单设计模式

java - 要开发 Internet Messenger,我应该怎么做?

java快速排序堆栈溢出

java - 如何在 Eclipse 和 Android Studio 之间共享 Java 源代码?

c++ - 余数相除且余数为正