What is going wrong?

Started by
3 comments, last by Amaz1ng 12 years, 10 months ago

#include <iostream>
#include <conio.h>

using namespace std;

void main()
{
long sum = 0, next = 0, prev = 1, curr = 2;

do
{
next = curr + prev;
prev = curr;
curr = next;

if(curr % 2 == 0)
{
sum += curr;
}
}
while(curr < 4000000);

cout << sum;

getch();
};


Just curious why this is not working. It's from project Euler:

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

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



By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

[size="5"]http://innercirclegames.freeforums.org
Email me at: innercirclegames@hotmail.com
Advertisement
What do you mean with "this is not working"? A runtime error? Or just a wrong result?

Regarding to the last possibility I see at least this: The initial value of curr is 2 and hence even, but it is not considered in the summation. Initialize sum with 2 to overcome this issue.
The Fibonacci sequence starts with two 1s. So the first ten terms are:

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

*Edit: Never mind. I missed the "sum of even terms" part. Reading comprehension fail.
It's giving an incorrect result.
[size="5"]http://innercirclegames.freeforums.org
Email me at: innercirclegames@hotmail.com

The Fibonacci sequence starts with two 1s. So the first ten terms are:

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

*Edit: Never mind. I missed the "sum of even terms" part. Reading comprehension fail.


lol actually that worked....the numbers need to initially be set to 1.
[size="5"]http://innercirclegames.freeforums.org
Email me at: innercirclegames@hotmail.com

This topic is closed to new replies.

Advertisement