首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Euler #2无限计划?

Euler #2无限计划?
EN

Stack Overflow用户
提问于 2012-01-19 21:06:29
回答 7查看 790关注 0票数 5

我试图解决欧拉计划#2,我不断地得到“无限”或"NaN“(不是数字)的答案--我尝试将数字类型更改为int (原名为Double),但这并没有解决任何问题,只是给了我答案"-1833689714”。

代码语言:javascript
运行
复制
public class Pro {
    static int g = 1;
    static int n, f = 0;
    public static void main(String args[]) {
        for (int i = 0; i <= 4000000; i++) {
            f = f + g;
            g = f - g;
            if (f % 2 == 0) {
                n += f;
            }
        }
        System.out.println("Answer: " + n);
    }
}

问题是:

Fibonacci序列中的每个新项都是通过添加前两个项来生成的。从1和2开始,头10个术语将是: 1、2、3、5、8、13、21、34、55、89、 通过考虑Fibonacci序列中值不超过400万的项,找出偶数项的和。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-01-19 21:10:08

您正在考虑Fibonacci序列的前4,000,000项,而不是不超过4,000,000的第一个x项。

票数 8
EN

Stack Overflow用户

发布于 2012-01-19 21:32:41

您的问题是整数溢出:在Java中,int变量仅限于Integer.MAX_VALUE (2147483647)。如果在计算中超过此值,则会溢出到最小的负值Integer.MIN_VALUE。请参见:

代码语言:javascript
运行
复制
public class IntegerOverflow {
    public static void main(String[] args) {
        int i = Integer.MAX_VALUE;
        System.out.println("i = Integer.MAX_VALUE: " + i);
        System.out.println("i + 1: " + (i + 1));
        System.out.println("i + 2: " + (i + 2));
    }
}

为了避免溢出问题,使用java.math.BigInteger类提供的任意精度整数执行计算:

代码语言:javascript
运行
复制
import java.math.BigInteger;

public class BigIntegerExample {
    public static void main(String[] args) {
        BigInteger b = BigInteger.valueOf(Long.MAX_VALUE);
        System.out.println("b = Long.MAX_VALUE: " + b);
        System.out.println("b**2: " + b.multiply(b));
        System.out.println("b**3: " + b.pow(3));
        System.out.println("b**10: " + b.pow(10));
    }
}

Note:由于您没有要求解决问题本身,所以我只是在回答这个问题。希望这能有所帮助

票数 3
EN

Stack Overflow用户

发布于 2012-01-19 21:09:55

您可能遇到了溢出。fibo(4000000)远远高于MAX_INT

注:,您不是被要求在4,000,000第一个数字中找到和偶数,而是要找到它们的不超过4,000,000的偶数之和。

您应该检查f< 4000000和如果不是,中断,而不是等待i达到4,000,000

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8933276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档