# Find the sum of even numbers up to a number x javascript

## Question:

I need to make a function that takes a number X as a parameter and that returns the total of the sum of all the numbers that are even from 0 to X.

This makes 0+2+4+6+8+10+…..X.

But I don't know what else I need to add, because this is what I have so far and it doesn't return what I ask for:

``````function sumaDeLosParesDel0Al(x){
var suma = 0
for (var i=1; i<x; i++){
if (i%2 == 0) {
suma += i
}
}
return suma
}

I propose you this algorithm that does not use loops.

There are exactly `N/2` number of even numbers between `2` and `N` , when `N` is even, and `(N-1)/2` even numbers when `N` is odd.

The sum of the smallest ( `N_0` ) of these even numbers with the largest of them ( `N_n` ), is equal to the sum of the next largest even number ( `N_1` ) with the even number before the largest ( `N_n-1` ).

This is an arithmetic progression , which translates into the following formula:

``````const suma = n*(min + max)/2;
``````

Where `n` is the number of pairs between `0` and `N` , in this case `min` would be `2` and `max` will be equal to `N` when it is even and `N-1` when it is odd.

So the algorithm can be as follows:

``````const sumaSoloPares = (numero) => {
if (numero < 2) return 0;
if (numero < 4) return 2;
const numOfPares = Math.floor(numero/2);
const min = 2;
const max = numero%2 === 0 ? numero : numero - 1;
const suma = ((min + max)*numOfPares)/2;
return suma;
}

console.log(sumaSoloPares(10));
console.log(sumaSoloPares(20));
console.log(sumaSoloPares(1345));
console.log(sumaSoloPares(15));
console.log(sumaSoloPares(40));
console.log(sumaSoloPares(41));``````

I hope this provides another insight into solving the problem.

Scroll to Top