There are several improvements that can and should be made in the code that was originally published:
:
, ,
HTML - div,
<p>Please enter the maximum number you'd like to find all prime numbers below it for.</p>
<p><input type="text" id="number" /></p>
<button id="run">RUN</button>
<br/>
<div id="answer"></div>
JS - isPrime boolean, findPrimes ,
try {
window.primes = JSON.parse(window.localStorage["primes"]);
console.log("retrieved "+window.primes.length+" primes from storage");
console.log(window.primes);
} catch(e){};
if (typeof(window.primes)!=="object") window.primes=[2,3,5,7];
function isPrime(x){
var prime=false, i=0,l=primes.length;
var maxprime=primes[l-1];
var reqprime = Math.floor(Math.sqrt(x));
if (reqprime>maxprime) {
findPrimes(reqprime);
l = primes.length;
}
while( (i<l) && (x%primes[i]!==0) && (primes[i]<=reqprime) ) ++i;
prime = ( (i===l) || (primes[i]>reqprime) );
return prime
};
function findPrimes(x){
var i=0,result=[],l=primes.length;
var maxprime=primes[l-1];
if (x>maxprime){
for(i=maxprime+2; i<=x; i+=2){
if (isPrime(i)) primes.push(i);
}
l=primes.length;
try {
window.localStorage["primes"]=JSON.stringify(primes);
} catch(e){ console.log("cant set primes in localStorage"); };
}
i=0;
while( (i<l) && (primes[i]<=x)){
result.push(primes[i]);
++i;
}
return result;
}
$('#run').on('click',function(){
var total=$('#number').val();
var answer = findPrimes(total);
$('#answer').html("<ul><li>"+
answer.join("</li><li>")+
"</li></ul>"
);
});
JSFIDDLE