无穷大错误 - 项目欧拉#26 - 互惠周期

时间:2013-02-18 07:58:34

标签: java

在尝试解决Project Euler中的问题#26时,我在Eclipse中收到错误。

我不想要解决方案!请。

如果你能给我一个建议,只是为什么我收到“无限”作为输出,请填写我。我已经尝试谷歌搜索但很难不偶然看到解决方案,我宁愿这样做尽可能少的帮助。

无穷大误差在p = 309之后。这根本不是一个“错误”,也许它只是截断一些东西。我尝试了很长时间和BigInteger,但它似乎没有帮助。

以下是PE#26中提出的问题:

这是我的代码:

public class Reciprocal_Cycles {

    public static void main(String[] args) {
        double b = 10;
        double p;
        for (p = 1; p < 1000; p++) {
            if (p % b != 0)

            System.out.println(((Math.pow(b, p - 1) - 1)) / p + "       " + p);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

  

无穷大错误发生在p=309之后。

double可以表示的最大数字约为1.8e+308,而Math.pow(10, 309)大于此数字+inf。当浮点计算溢出时,您得到p % b != 0

另外,将{{1}}与浮点变量一起使用时要小心。