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

ตรวจสอบว่าตัวเลขเป็นผลรวมของกำลังสองสมบูรณ์สองจำนวนได้หรือไม่ (JavaScript)

กำลังสองสมบูรณ์ (Perfect Square)

ตัวเลขที่เป็นผลคูณของตัวเลขกับตัวเอง เช่น 9, 16, 81, 289

ปัญหา

รับตัวเลข num ตรวจสอบว่ามี m, n ทำให้ m² + n² = num หรือไม่

ตัวอย่าง

const num = 389;

389 = 17² + 10² → ผลลัพธ์ true

โค้ดตัวอย่าง (Two Pointers)

const num = 389; 
const canSumSquares = (num = 2) => { 
  let left = 0, right = Math.floor(Math.sqrt(num)); 
  while(left <= right){ 
    if (left * left + right * right === num) { return true; } 
    else if (left * left + right * right < num) { left++; } 
    else { right--; } 
  } 
  return false; 
}; 
console.log(canSumSquares(num));

ผลลัพธ์

true