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';