C ++中的Euler#2

时间:2011-12-30 20:35:48

标签: c++

所以,我是C ++的新手,我决定做一些Euler问题......问题是,我似乎无法解决问题2.似乎没有任何问题。据我所知,这可能是一个编程问题。构建运行,但给了我一个错误的答案19,544,084。

#include "stdafx.h"
#include <iostream>
using namespace std;

int a = 1;
int b = 2;
int c = 0;
int total = 0;

int _tmain(int argc, _TCHAR* argv[])
{

while (a <= 4000000 || b <= 4000000 || c <= 4000000) {
    c = a + b;
        if (c % 2 == 0) {
            total += c;
        }
    a = c + b;
        if (a % 2 == 0) {
            total += a;
        }
    b = a + c;
        if (b % 2 == 0) {
            total += b;
        }
}
total += 2; // Didn't start with 2 in Fibonacci, so added it at end.
cout << total;
return 0;
}

1 个答案:

答案 0 :(得分:1)

你的逻辑错了。当您输入循环时,a,b和c可能都小于4百万,但两个小于4百万的数字的总和也不一定小于4百万。在将数字添加到总数之前,还需要检查该值是否小于4百万。

if (c < 4000000 && c % 2 == 0)

对a和b执行相同的操作。