Khan isPrime (v4)

Revision 4 of this benchmark created on


Setup

function test(fn) {
        for (var i = 900000; i < 1000000; i++) {
            fn(i);
        }
    }

Test runner

Ready to run.

Testing in
TestOps/sec
khanPrime
var khanPrime = function(n) {
    if (n <= 1) {
        return false;
    } else {
        /* maybe do something faster, like Miller-Rabin */
        for (var i = 2; i * i <= n; i++) {
            if (n % i <= 0.5) {
                return false;
            }
        }

        return true;
    }
};
test(khanPrime);
 
ready
zachPrime
var zachPrime = function(n) {
    if (n <= 1 || n > 2 && n % 2 === 0) {
        return false;
    } else {
        for(var i = 3, sqrt = Math.sqrt(n); i <= sqrt; i += 2) {
            if ( n % i === 0 ) {
                return false;
            }
        }
    }
    return true;
};
test(zachPrime);
ready
khanOddPrime
var khanOddPrime = function(n) {
    if (n <= 1 || n > 2 && n % 2 === 0) {
        return false;
    } else {
        /* maybe do something faster, like Miller-Rabin */
        for (var i = 3; i * i <= n; i += 2) {
            if (n % i === 0) {
                return false;
            }
        }

        return true;
    }
};
test(khanOddPrime);
 
ready
mzPrime
function mzPrime(n) {
        var primes = arguments.callee.primes || (arguments.callee.primes = [2, 3]);
        if (n <= 1) return false;
        
        var i, p, m, mIsPrime;
        for (i = 0, p; (p = primes[i]) && (p*p <= n); i++)
                if (n % p === 0) return false;
        if (!p)
                for (m = primes[primes.length-1] + 2; m*m <= n; m += 2) {
                        mIsPrime = true;
                        for (i = 0, p; (p = primes[i]) && (p*p <= m); i++)
                                if (m % p === 0) { mIsPrime = false; break; }
                        if (mIsPrime) {
                                primes[primes.length] = m;
                                if (n % m === 0) return false;
                        }
                }
        return true;
};
test(mzPrime);
 
ready
regex
function isPrime (val) {
  return !/^1?$|^(11+?)\1+$/.test((new Array(val + 1)).join('1'));
}

test(isPrime);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.