Project Euler: Problem 7: 10001st prime

Project Euler: Problem 7: 10001st prime
0

#1

What’s happening:
I don’t know why the code doesn’t seem to work with 10001 on fcc, but using node it does. Someone has any idea of why?
Thanks

My code so far

const nthPrime = (number) => {
let primes = [2];
for(let i = 3; primes.length <= number; i+= 2) {
if(primes.every(v => i % v !== 0)) {
primes.push(i);
if(primes.length === number) return i;
}
}
}
nthPrime(10001);

My browser information:
User Agent is: Chrome/68.0.3440.84.

#2

The fcc editor thinks that you have a possible infinite loop, so it refuses to run. As far as I know the option to disable that hasn’t been implemented yet

#3

Does //noprotect not work anymore or something?

#4

You need a more efficient algorithm to pass the tests.

#5

Is 100ms a reasonable limit for this question?

Fwiw with the naïve sieve of Eratosthenes you would need an array of over 100000 elements

#6

You are totally right, I just optimize the code a bit:

const nthPrime = (number) => {
let primes = [2];
let higherDivisorLimit;
let isPrime;
for(let i = 3; primes.length < number; i+=2) {
higherDivisorLimit = Math.sqrt(i) + 1;
isPrime = true;
for(let j = 0; primes[j] < higherDivisorLimit; j++) {
if(i % primes[j] === 0) {
isPrime = false;
break;
}
}
if(isPrime) primes.push(i);
}
return primes[primes.length - 1];
}
nthPrime(10001);

I just discovered, after reading a bit, I just needed to compare the numbers up to their square root. All divisors higher than that will have a rest equal to a smaller divisor (I think I studied that at primary school, haha).