JSFiddle - React, Tailwind, and code Playground
by Jacques Vincilione
HTML
<div id="result"></div>
JavaScript
var timer;
var countSquares = function(min, max) {
var start = performance.now();
var count = 0;
if (max < 1) {
return -1;
}
var square = min < 4 && max >= 4 ? 2 : Math.sqrt(min);
if (square % 1 > 0) {
square = Math.floor(square);
} else {
count += 1;
}
var continueLoop = true;
while (continueLoop) {
square = square + 1;
if (square * square <= max) {
count += 1;
} else {
continueLoop = false;
}
}
timer = performance.now() - start;
return count || -1;
};
var countSquaresSlowly = function(min, max) {
var start = performance.now();
var count = 0;
if (max < 1) {
return -1;
}
for (var i = min > 1 ? min : 2; i < max; i++) {
if (Math.sqrt(i) % 1 === 0) {
count++;
}
}
timer = performance.now() - start;
return count || -1;
}
document.getElementById('result').innerHTML = countSquares(-68141414124124, 1231414141241240000) + ' Perfect Squares<br/>' + timer + ' milliseconds <br><br>';
//document.getElementById('result').innerHTML += countSquaresSlowly(-123141414124124, 400000000) + ' Perfect Squares<br/>' + timer + ' milliseconds';