Reputation: 7
var enteredValue = prompt("enter a number");
enteredValue = enteredValue + 0;
console.log(isPrime(enteredValue));
function isPrime(num) {
for (var i = 2; i < num; i++) {
if (num % i === 0) {
return false;
} else {
return true;
}
}
}
Can anyone tell me what I'm doing wrong? The code is always returning false.
Upvotes: 0
Views: 51
Reputation: 11620
Your method should return true outside of your for loop. With your example you are retuening in first iteratin, by entering else block.
This will work:
function isPrime(num) {
for (var i = 2; i < num; i++) {
if (num % i === 0) {
return false; // return if it's not a prime
}
}
return true; // return only if it's a prime number
}
You can also check other prime solutions in this post.
Upvotes: 0
Reputation: 386680
You need to move the return of true
out side of the loop, because you need to check all factors before returning true
.
var enteredValue = +prompt("enter a number");
console.log(isPrime(enteredValue));
function isPrime(num) {
for (var i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
Upvotes: 2