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 =...