Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 长溢出:斐波那契级数_Java_Overflow - Fatal编程技术网

Java 长溢出:斐波那契级数

Java 长溢出:斐波那契级数,java,overflow,Java,Overflow,我试图解决第二个Euler问题(计算所有偶数斐波那契数之和=400万。只需在执行过程中打印出所有数字,然后查看溢出发生的位置。这样你就看不到前400万个斐波那契项了。您可以从中获得更多斐波那契信息。只需在浏览时打印出所有数字,然后查看溢出发生的位置。这样你就看不到前400万个斐波那契项了。你可以从中获得更多的斐波那契信息。你似乎在计算前40万个斐波那契数字,而不仅仅是400万(应该少一些)是的,很抱歉我把它改成了40万,但这根本不起作用。我讨厌人们说“接受我的答案”,但我也不喜欢问问题,什么都不

我试图解决第二个Euler问题(计算所有偶数斐波那契数之和<400万),到目前为止,我已经得出以下结论:

public class CCTrial1 {
    public static void fib(){
    long  a = 0, b = 1;
    long  c = 0, sum = 0;
    int i = 1;
    long even = 0;
    while(i < 400000){
        c = a + b;
        sum = c;
        a = b;
        b = c;
        if(sum %2 == 0){
            even += sum;

        }
        i++;
    }
    System.out.println("Count " +i);
    System.out.println("Last Fib no " +sum);
    System.out.println("Sum " +even);
    }

    public static void main (String[] args){
        fib();
    }
 }
公共类CCTrial1{
公共静态无效fib(){
长a=0,b=1;
长c=0,和=0;
int i=1;
长偶数=0;
而(i<400000){
c=a+b;
总和=c;
a=b;
b=c;
如果(总和%2==0){
偶数+=和;
}
i++;
}
系统输出打印项次(“计数”+i);
系统输出打印项次(“最后一个Fib编号”+总和);
System.out.println(“总和”+偶数);
}
公共静态void main(字符串[]args){
fib();
}
}

我把它改成了long,但仍然有溢出。你能告诉我哪里出了问题吗?

这个问题涉及的斐波那契项不到400万,而不是前400万个斐波那契项


例如,第35、36和37个斐波那契数分别为5702887、9227465和14930352;问题陈述将它们全部排除在考虑范围之外,因为它们都大于4000000。

问题涉及小于400万的斐波那契项,而不是前400万的斐波那契项


例如,第35、36和37个斐波那契数分别为5702887、9227465和14930352;问题陈述将它们全部排除在考虑之外,因为它们都大于4000000。

如果要计算所有小于400万的斐波那契数,则不应循环400万次。第400万个斐波那契数约为10^835950,这超出了您的范围


相反,你只需要简单地计算一下,直到a+b>=400万。

如果你想计算400万以下的所有斐波那契数,你不应该循环400万次。第400万个斐波那契数约为10^835950,这超出了您的范围


相反,您只需简单地执行此操作,直到a+b>=400万。

只需在执行过程中打印出所有数字,然后查看溢出发生的位置。这样你就看不到前400万个斐波那契项了。您可以从中获得更多斐波那契信息。

只需在浏览时打印出所有数字,然后查看溢出发生的位置。这样你就看不到前400万个斐波那契项了。你可以从中获得更多的斐波那契信息。

你似乎在计算前40万个斐波那契数字,而不仅仅是400万(应该少一些)是的,很抱歉我把它改成了40万,但这根本不起作用。我讨厌人们说“接受我的答案”,但我也不喜欢问问题,什么都不做。你似乎在计算前40万个斐波那契数,而不仅仅是400万(应该少一些)是的,对不起,我把它改成了40万,但这根本不起作用。我讨厌人们说“接受我的答案”,但我也不喜欢问问题,什么都不做。