This problem asks to return sum of all prime numbers that are less than or equal to a given number.
A prime number is a whole number greater than 1 with exactly two divisors: 1 and itself.
Here is how to solve that algorithm:
Step 1. Set up the algorithm, accounting for the number 2 (the lowest prime):
function sumprime(num){
if (num < 2){
return 0;
}
return num;
}
sumprime(10);
Step 2. If num is greater than 2, we want to keep track of all the prime numbers up to and including the given parameter. We will need to use a for loop to check for composite numbers (the opposite of prime).
function sumprime(num){
if (num < 2){
return 0;
}
const primes = [];
for (let i = 2; i <= num; i++){
let composite = false;
for (const p of primes){
if (i % p === 0){
composite = true;
break;
}
}
if (!composite){
primes.push(i)
}
}
console.log(primes)
return num;
}
sumprime(10);
Step 3. Sum up the numbers!
function sumprime(num) {
if (num < 2) {
return 0;
}
const primes = [];
for (let i = 2; i <= num; i++) {
let composite = false;
for (const p of primes) {
if (i % p === 0) {
composite = true;
break;
}
}
if (!composite) {
primes.push(i)
}
}
let sum = 0;
for (const p of primes) {
sum += p;
}
return sum;
}
sumprime(10);
Top comments (1)
This is a (pun intended) prime example of recursion allowing a more concise solution:
Your solution is valid, just the use of an array to sum up the primes is superfluous.