JSFiddle - React, Tailwind, and code Playground

by dvjc

HTML

<div id="divResult"></div>
<div id="divReason"></div>
<div id="divNewPrimes"></div>
<div id="divDuration"></div>

JavaScript

var primes = [];
populatePrimes()
var newprimes = [];
var test = 640000;
var reason = '';

testUpTo(test);
document.getElementById('divResult').innerText = test + ' is a prime: ' + isPrime(test);
document.getElementById('divReason').innerText = reason;
document.getElementById('divNewPrimes').innerText = "[" + newprimes + "];";

function testUpTo(a){
    for( var i = 2; i < a; i++){
        var b = isPrime(i);
    }
}

function isPrime(a){
    // existing primes are prime
    if( isExistingPrime(a) ){
        return true;
    }
    
    // first divide by all existing primes - remainder 0 indicates not a prime
    for( var i = 0; i < primes.length; i++){
        if( a % primes[i] == 0 ){
            reason = 'a is not prime due to ' + primes[i];
            return false;
        }
    }
    
    // still uncertain: check up to the square root of the value
    var b = Math.floor(Math.sqrt(a)+1);
    var c = primes[primes.length-1]; // biggest current prime
    for( var i = (c+1); i < b; i++){
        if( a % i == 0 ){
            reason = 'a is not prime due to ' + i;
            return false;
        }        
    }
    
    // at this point, all tests have failed = it is prime
    newprimes.push( a );
    return true;
}

function isExistingPrime(a){
    var len = primes.length;
    for( var i=0; i<len; i++){
        if( primes[i] == a ){
            return true;
        }
    }
}

function populatePrimes(){
primes =...