Check if number is a perfect square with Binary Search algorithm

Check if number is a perfect square using binary search algorithm (my vision)

by Yurii Predborskyi

JavaScript

function write(message) {
	document.write(message);
  document.write('<br/>');
}
function isPerfectSquare(n) {
    let start = 2;
    let end = n / 2;
    if (n < 4) {
        return { answer: false };
    } else if (n === 4) {
        return { answer: true };
    }
    while (start < end) {
        let mid = Math.floor((start + end) / 2);
        let square = mid * mid;
        if (square === n) {
            return { answer: true };
        } else if (square > n) {
            end = mid;
        } else {
            start = mid + 1;
        }
    }
    return { start: start, end: end, answer: false };
}


let tests = {
	2: false,
	4: true,
  6: false,
  8: false, // its a cube, not a square,
  9: true,
  15: false,
  16: true,
  20: false,
  36: true,
  44: false,
  49: true,
  100: true,
  111: false,
  121: true,
  256: true,
  361: true,
  391: false,
  400: true
};

Object.entries(tests).forEach(([key, value]) => {
	let res = isPerfectSquare(Number(key));
  write(`${key}: ${value}, calc is ${res.answer === value ? 'CORRECT' : 'WRONG!'}`);
});