Fibonacci(<4百万)甚至条款的总和是多少?[大值数据类型混淆]

r0a*_*ach 3 c types fibonacci

从1和2开始,Fibonacci系列的前10个术语将是:

1,2,3,5,8,13,21,34,55,89 ......

找出序列中所有偶数项的总和,不超过400万.


现在,我明白了如何做到这一点.但我对数据类型感到困惑,无法容纳如此庞大的数据.我得到了奇怪的结果int.:(

更多:其项目欧拉第二个问题.但我无法得到它.我得到疯狂的价值观作为答案.有人可以发布理想的节目吗?

编辑:这是我为将Fibonacci打印到屏幕而写的内容.裸基本.即使我给100分限制,我的变量也会变得疯狂.我的代码错了吗?

// Simple Program to print Fibonacci series in Console
#include <stdio.h>
int main() {
    int x=1,y=2,sum=0,limit=0,i=0,temp=0;
    printf("Enter Limit:");
    scanf("%d",&limit);

    if(limit==1)
        printf("%d",x);
    else if(limit>1) {
        printf("%d %d",x,y);
        if (limit>2) {
            while (i<limit-2) {
                temp=y;
                sum=x+y;
                x=temp;
                y=sum;
                printf(" %d",sum);
                i++;
            }
        }
    }      

    printf("\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

解决:实际上,我自己设法得到了解决方案.这是我的计划.有用.

#include <stdio.h>
int main() {
    int x=1,y=2,sum,limit;     //Here value of first 2 terms have been initialized as 1 and 2
    int evensum=2;             //Since in calculation, we omit 2 which is an even number
    printf("Enter Limit: ");   //Enter limit as 4000000 (4million) to get desired result
    scanf("%d",&limit);
    while( (x+y)<limit ) {
        sum=x+y;
        x=y;
        y=sum;
        if (sum%2==0)
            evensum+=sum;
    }
    printf("%d \n",evensum);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

jpr*_*ete 6

由于你只需要四百万,所以这可能int不是你的问题.

你的程序很可能是错误的并且数据存储很好,所以你应该用较小的值来测试你的程序.例如,很明显,第一个三个连项的总和是44(提示:每一个第三项是偶数),所以如果你用50帽运行您的程序,那么你应该立即得到44回.继续运行小型测试用例以获得对较大测试用例的信心.