**Tell us what’s happening:**

So, I believe I’ve found a very efficient way to solve this exercise by iterating only over the prime numbers array and the numbers smaller than *num*

I’ve used a very simple mathematical insight for this: *Every integer greater than 1 is either a prime number, or the product of two or more prime numbers*

Take the first 5 primes: 2, 3, 5, 7, 11;

5, as you know, doesn’t have 2 or 3 (the only primes smaller than 5) as factors, thus 5 is prime

15 can be written as 3 * 5, which means it’s not prime.

22 can be written as 2 * 11, which means it’s not prime

So we don’t have to check if a number is divible by any other numbers smaller than its half to know if it’s prime, we only have to test it against other primes

I don’t think I’m the first to do this, I just wanted to share it because it’s not one of the solutions listed to the challenge

**Your code so far**

```
function sumPrimes(num, arr = []) {
if (num <= 1) return
for (let next = 2; next <= num; next++)
if (!arr.some(val => next % val === 0)) arr.push(next)
return arr.reduce((a, b) => a + b)
}
console.log(sumPrimes(977));
```

**Your browser information:**

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36`

.

**Challenge:** Sum All Primes

**Link to the challenge:**