Prime Numbers
isPrime vs array style
by mslocum
HTML
<h2>Count primes between numbers</h2>
<div>
<label>Start: <input type="number" id="start" value="2"/></label>
<label>End: <input type="number" id="end" value="1000000"/></label>
</div>
<div>
<button id="array">Array Style</button>
<!--<button id="isPrime">isPrime</button>-->
<button id="isPrimeSqrt">isPrime SquareRoot</button>
</div>
<div id="log"></div>
JavaScript
$(function() {
$('#array').click(function() {
var start = parseInt($('#start').val(), 10),
end = parseInt($('#end').val(), 10),
dStart = new Date(),
iFound,
dEnd;
iFound = list(start, end);
dEnd = new Date();
log('Array: ' + iFound + ' time: ' + (dEnd - dStart));
});
$('#isPrime, #isPrimeSqrt').click(function(e) {
var start = parseInt($('#start').val(), 10),
end = parseInt($('#end').val(), 10),
dStart = new Date(),
iFound,
dEnd;
iFound = checkEach(start, end, e.target.id === 'isPrimeSqrt');
dEnd = new Date();
log(e.target.id + ': ' + iFound + ' time: ' + (dEnd - dStart));
});
});
function log(strLog) {
$('#log').append(strLog + '<br/>');
}
function list(start, end) {
function getPrimes(num) {
var aPrimes = num > 1 ? [2] : [],
iStop,
i,
j,
bFound;
for (i=3; i <= num; i += 2) {
bFound = false;
iStop = Math.floor(Math.sqrt(i));
for (j=0; !bFound && j < aPrimes.length && aPrimes[j] <= iStop; j++) {
if (i % aPrimes[j] === 0) {
bFound = true;
}
}
if (!bFound) {
aPrimes.push(i);
}
}
return aPrimes;
}
var aPrimes = getPrimes(end),
iFound = 0,
i=0;
for (i; i < aPrimes.length; i++) {
if (aPrimes[i] >= start) {
iFound++;
}
}
return iFound;
}
function checkEach(start, end, bSqrt) {
function isPrime(num) {
if (num == 1) {
return false;
}
if (num == 2) {
return true;
}
if (num % 2 === 0) {
return false;
}
var iStop = bSqrt ? Math.floor(Math.sqrt(num)) : num -1;
for (var i=3; i <= iStop;...