ตัวเลขนาร์ซิสซิสติก (Narcissistic number)
Narcissistic number ในฐานเลข b ที่กำหนด คือตัวเลขที่เป็นผลรวมของหลักของมันเอง แต่ละหลักยกกำลังจำนวนหลัก
ตัวอย่าง −
153 = 1^3 + 5^3 + 3^3 = 1+125+27 = 153
เช่นกัน
1 = 1^1 = 1
วิธีการ
เราจะนับจำนวนหลักก่อนด้วย while loop แล้วด้วย while loop อีกอัน เราเลือกหลักสุดท้ายของตัวเลขและบวกกำลัง (count) ของมันเข้าไปในตัวแปร sum หลังลูป เราคืนค่าบูลีนตรวจสอบว่า sum เท่ากับตัวเลขหรือไม่
โค้ดสำหรับวิธีนี้จะเป็น −
ตัวอย่าง
const isNarcissistic = (num) => { let m = 1, count = 0; while(num / m > 1){ m *= 10; count++; }; let sum = 0, temp = num; while(temp){ sum += Math.pow(temp % 10, count); temp = Math.floor(temp / 10); }; return sum === num; }; console.log(isNarcissistic(153)); console.log(isNarcissistic(1634)); console.log(isNarcissistic(1433)); console.log(isNarcissistic(342));ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้
true true false false