ProjectEuler2-(我自己的解决方案)

时间:2013-12-22 03:56:09

标签: c

我试图通过for循环解决Project Euler问题2。我是c编程的新手,我似乎无法使算法正确。 3524579

for循环假设查看32个斐波那契小于4000000.然后我定义了斐波那契函数,之后我想在第二个for循环中添加偶数斐波纳契数。

我得到3524579,任何人都可以帮我解决我做错的事吗?

/ *已编辑:      好的,我用你的提示重写了代码。我不明白为什么这不起作用。我试图在纸上写下每个步骤:     谓词被评估为b mod 2 == 0,因此发生以下情况:

sum = 2 + 0

a = b - > a == 2

b =总和 - > b == 2     这些步骤迭代到值4mill。有人能看到我看不到的东西:p?* /

新编辑的版本:我终于使用for循环了。只是想知道是否有一种更漂亮的方式来使用for循环。

#include <stdio.h>


int main() {

    int a = 0;
    int b = 1;
    int result = 0;
    int sum = 0;





    for(;;){

        if(!(b < 4000000)) break;
        if(b % 2 == 0)
        result = result + b;


        sum = a + b;
        a = b;
        b = sum;
        printf("%d\n", result);


    }

  }

1 个答案:

答案 0 :(得分:3)

一些事情:

  1. 请注意,您的答案等于第31个原始数字+ 1。这意味着您将在每次迭代时用新值替换总数而不是保持总计。

  2. 考虑循环,直到当前的fib数为&gt; 4M而不是预先确定你需要查看32个fib数。