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