c - 什么是斐波那契偶数项之和(<400 万)? 【大值数据类型混淆】

标签 c types fibonacci

从 1 和 2 开始,斐波那契数列的前 10 项将是:

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

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


现在,我想到了如何做到这一点。但是我对保存如此大数据的数据类型感到困惑。我用 int 得到了奇怪的结果。 :(

更多:它是欧拉计划的第二个问题。但我无法得到它。我得到疯狂的值(value)观作为答案。有人可以发布理想的程序吗?

编辑:这是我为将 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;
}

已解决:实际上,我设法自己找到了解决方案。这是我的程序。它有效。

#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;
}

最佳答案

因为您最多只想要四百万,所以 int 可能不是您的问题。

很可能您的程序存在错误,而数据存储却很好,因此您应该在较小的值上测试您的程序。例如,前三个偶数项的总和显然是 44(提示:每三个项都是偶数),因此如果您以 50 的上限运行程序,那么您应该立即得到 44。继续运行小型测试用例以获得对较大测试用例的信心。

关于c - 什么是斐波那契偶数项之和(<400 万)? 【大值数据类型混淆】,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644446/

相关文章:

c# - 将枚举作为参数传递

c - 使用 GCC 进行堆栈保护和粉碎

c - C 中的可变参数,如何获取具有泛型类型的值?

postgresql - 更改域更改类型

java - 如何返回方法完成其工作所需的时间?

java - 动态规划斐波那契数列

python - 在Python中实现自下而上的斐波那契数列

c - 我应该为结构使用哪种命名约定?

c - 使用 switch-case 结构来计算数字被输入的次数

types - 如何在 D 中创建强类型别名?