所以,我是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;
}
答案 0 :(得分:1)
你的逻辑错了。当您输入循环时,a,b和c可能都小于4百万,但两个小于4百万的数字的总和也不一定小于4百万。在将数字添加到总数之前,还需要检查该值是否小于4百万。
if (c < 4000000 && c % 2 == 0)
对a和b执行相同的操作。