7) 10001st prime

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10 001st prime number?

by fosco

JavaScript

function findPrimeByNumber(primeNumber, offset, sieve) {
    sieve = sieve || [];
    offset = offset || 5;

    var sieveLength = sieve.length,
        start = sieveLength === 0 ? 2 : sieveLength;

    if (sieveLength !== 0) {
        --sieveLength;
    }

    var n = sieveLength + offset;

    for (var k = start; k <= n; k++) {
        sieve[k] = 1;
    }

    for (k = 2; k * k <= n; k++) {
        if (sieve[k] == 1) {
            for (l = k * k; l <= n; l += k) {
                sieve[l] = 0;
            }
        }
    }

    var index = 0,
        value = 0;

    for (k = 2; k <= sieve.length - 1; k++) {
        if (sieve[k] === 1) {
            ++index;
        }

        if (index === primeNumber) {
            value = k;
            break;
        }
    }

    if (value !== 0) {
        return value;
    }

    return findPrimeByNumber(primeNumber, offset, sieve);
}

console.time('findPrimeByNumber');
console.log(findPrimeByNumber(10001, 100000)); //104743
console.timeEnd('findPrimeByNumber'); //24.166ms