Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ตรวจสอบเลขยกกำลังสอง (Perfect Square) โดยไม่ใช้ Math Library - JavaScript

ตรวจสอบว่าตัวเลขเป็นเลขยกกำลังสอง (Perfect Square) หรือไม่ โดยไม่ใช้ Math.sqrt() ใช้การวนลูปเช็คแทน

ตัวอย่างโค้ด

const isPerfectSquare = num => {
  if (num < 0) return false;
  let i = 1;
  while (i * i <= num) {
    if (i * i === num) return true;
    i++;
  }
  return false;
};

console.log(isPerfectSquare(81));    // true
console.log(isPerfectSquare(9801));  // true
console.log(isPerfectSquare(99));    // false
console.log(isPerfectSquare(441));   // true
console.log(isPerfectSquare(7648));  // false

ผลลัพธ์

true true false true false

วิธีที่มีประสิทธิภาพมากกว่า (Binary Search)

const isPerfectSquareBS = num => {
  if (num < 0) return false;
  let left = 1, right = num;
  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    const sq = mid * mid;
    if (sq === num) return true;
    if (sq < num) left = mid + 1;
    else right = mid - 1;
  }
  return false;
};

Binary Search ลดความซับซ้อนจาก O(√n) เป็น O(log n) เร็วกว่ามากสำหรับตัวเลขใหญ่