* Correct ProjectEuler:002 definition and tests From projecteuler.net: By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms. Correct: take all f(n) where f(n) <= 4,000,000 and f(n) is even Incorrect: take all f(n) where n <= 4,000,000 and f(n) is even * Incorporate PR review suggestios to ProjectEuler 002 Reword the problem statement Co-Authored-By: Tom <20648924+moT01@users.noreply.github.com> Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
2.0 KiB
2.0 KiB
id, challengeType, title, forumTopicId
| id | challengeType | title | forumTopicId |
|---|---|---|---|
| 5900f36e1000cf542c50fe81 | 5 | Problem 2: Even Fibonacci Numbers | 301838 |
Description
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed n, find the sum of the even-valued terms.
Instructions
Tests
tests:
- text: <code>fiboEvenSum(10)</code> should return 10.
testString: assert.strictEqual(fiboEvenSum(10), 10);
- text: <code>fiboEvenSum(60)</code> should return 44.
testString: assert.strictEqual(fiboEvenSum(60), 44);
- text: <code>fiboEvenSum(1000)</code> should return 798.
testString: assert.strictEqual(fiboEvenSum(1000), 798);
- text: <code>fiboEvenSum(100000)</code> should return 60696.
testString: assert.strictEqual(fiboEvenSum(100000), 60696);
- text: <code>fiboEvenSum(4000000)</code> should return 4613732.
testString: assert.strictEqual(fiboEvenSum(4000000), 4613732);
- text: Your function should return an <code>even</code> value.
testString: assert.equal(fiboEvenSum(10) % 2 === 0, true);
Challenge Seed
function fiboEvenSum(n) {
// You can do it!
return true;
}
fiboEvenSum(10);
Solution
const fiboEvenSum = (number) => {
if (number <= 1) {
return 0;
} else {
let evenSum = 0, prevFibNum = 1, fibNum = 2; // According to problem description our Fibonacci series starts with 1, 2
for (let i = 2; fibNum <= number; i++) {
if (fibNum % 2 == 0) {
evenSum += fibNum;
}
[prevFibNum, fibNum] = [fibNum, prevFibNum + fibNum];
}
return evenSum;
}
}