为什么';此代码是否适用于[100]及以上版本?(C中的euler 2项目)

为什么';此代码是否适用于[100]及以上版本?(C中的euler 2项目),c,C,这是我的密码: 我不明白为什么它给了我50以上的错误答案 #include<stdio.h> int main() { long long int i, sum=0; long long int a[50]; a[0] = 1; a[1] = 1; for(i=2;i<50;i++) { a[i] = a[i-1] + a[i-2]; if(a[i]%2==0 && a[i]<4

这是我的密码:

我不明白为什么它给了我50以上的错误答案

#include<stdio.h>

int main()
{
    long long int i, sum=0;
    long long int a[50];
    a[0] = 1;
    a[1] = 1;
   for(i=2;i<50;i++)
   {
        a[i] = a[i-1] + a[i-2];
        if(a[i]%2==0 && a[i]<4000000) 
        sum = sum + a[i];
   }
printf("%lld", sum);
return 0;
}
#包括
int main()
{
长整型i,和=0;
长整型[50];
a[0]=1;
a[1]=1;

对于(i=2;i你有一个整数溢出。斐波那契数变得非常大。大约
F(94)
的东西超出了64位整数的范围(比如
long


当溢出发生时,
a
中的数字会变小,甚至是负数,而不是真正的fibonacci数。你需要解决这个溢出问题。

你有一个整数溢出。fibonacci数会变大。在
F(94)
周围的东西会超出64位整数的范围(比如
long

当溢出发生时,
a
中的数字会变小,甚至是负数,而不是真正的斐波那契数。你需要解决这个溢出问题。

你的第一个错误是当一个术语 超过4000000。你不需要考虑其他条件。 已声明的问题;如果停止,则不需要处理整数溢出 在那里,你不需要接近50个条件就可以做到这一点

对于这一点,您也不需要存储所有术语,除非 希望查看它们以检查正确性(并简单地打印它们 你的第一个错误是当一个术语出现时没有跳出循环 超过4000000。你不需要考虑其他条件。 已声明的问题;如果停止,则不需要处理整数溢出 在那里,你不需要接近50个条件就可以做到这一点

对于这一点,您也不需要存储所有术语,除非 希望查看它们以检查正确性(并简单地打印它们
这样做同样有效).

可能是因为循环只工作到50岁…你能提到期望的输出吗?请显示不工作的代码。仅工作的代码是无用的。另外,请复制粘贴问题中的问题描述。可能是因为循环只工作到50岁…你能提到期望的输出吗?请显示不工作的代码。只是代码不工作hat确实有用。另外,请复制粘贴问题中的问题描述。
F(90) = 2880067194370816120   >= 2^61
F(91) = 4660046610375530309   >= 2^62
F(92) = 7540113804746346429   >= 2^62
F(93) = 12200160415121876738  >= 2^63
F(94) = 19740274219868223167  >= 2^64
F(95) = 31940434634990099905  >= 2^64
F(96) = 51680708854858323072  >= 2^65