# numbers – Javascript + return PrimeNumbers

## numbers – Javascript + return PrimeNumbers

25/Math.sqrt(25) = 0, therefore NotPrime

BUT 25/2=12.5, 25/3=8.3333 25/4=6.25 => IsPrime

No. Only because it neither is divisible by 2, 3, and 4, it does not mean that 25 is a prime number. It must be divisible by *nothing* (except 1 and itself) – but 25 is divisible by 5 as you noticed. You will have to check against that as well.

13 is printed twice because 13/2 and 13/3 is executed.

Question here: I would like to fix this duplication also?

Your logic is flawed. As above, just because a number is not divisible by an other number that does *not* mean it was prime – but your code prints results based on that condition. Instead, is has to be not divisible by **all** other numbers.

You just have an extra condition that nothing that is divisible by 2 or 3 enters the loop, but everything that is divisible by 5, 7, 11 etc (and not divisible by 2 or 3) is yielded. 25 is just the first number to occur in that series, the next ones will be 35 and 49.

Actually youre already testing 2 and 3 in the loop from `2`

to `a`

already, so you should just omit that condition. You wouldve noticed your actual problem much faster then if you had tried:

```
function prime(n) {
for (var i = 1; i <= n; i++) {
var a = Math.floor(Math.sqrt(i));
for(j = 2; j<=a; j++) {
if(!isInt(i/j)) {
console.log(i+/+j+==+i/j+, therefore +i+ is Prime);
}
}
}
}
prime(25);
```

The logic should be: Test all divisors from `2`

to `sqrt(i)`

, and if `i`

is divisible by any of them you know that its not a prime. Only if it has passed the loop with **none of them** being a factor of `i`

, you know **in the end** that its a prime. Ill leave that as an exercise to you ðŸ™‚