I was taking a test and the and the question was : make a function for a given number N sum up all even numbers from 2 to N.
i make this function but i want to know how i can make it better like if i enter a odd number.
for the example they give me:
the input was : 10 and the output was 30.
my function:
function sumUp(N) {
var sum = 0
var sumTemp = 0
const start = N
for(let i = 1; i < N ; i++) {
if(N === 2) {
sum = 2
} else {
if(i%2 === 0) {
sumTemp = sumTemp + i
}
}
sum = start + sumTemp
}
return console.log(sum)
}
sumUp(10);
thanks in advance.
Yes, you can make it better.
function sumUp(N) {
var sum = 0
for (var i = 2; i < N; i += 2) {
sum += i
}
return sum
}
console.log(sumUp(7));
you can do it using this simple function:
function solve(N) {
N = N - N % 2;
let odd = N / 2;
let even = N * (N + 1) / 2 - odd * odd;
return Math.floor(even);
}
It works in O(1) time
A better function would be something like the following:
function sumUp(N) {
let sum = 0
for(let i = 2; i <= N ; i+=2) {
sum += i
}
return console.log(sum)
}
It works, seen here: