ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับตัวเลข n เข้ามา และคืนค่าผลรวมของเลขยกกำลังสามสมบูรณ์ (perfect cubes) ทั้งหมดที่น้อยกว่าหรือเท่ากับ n
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const num = 23546;
const sumPerfectCubes = (num = 1) => {
let i = 1;
let sum = 0;
while (i * i * i <= num) {
sum += (i * i * i);
i++;
}
return sum;
};
console.log(sumPerfectCubes(num));
ผลลัพธ์
164836
คำอธิบายเพิ่มเติม
อัลกอริทึมนี้วนลูปตั้งแต่ 1 จนกว่า i³ จะเกิน n ซึ่งมีความซับซ้อน O(∛n) สามารถปรับปรุงได้โดยใช้สูตรผลรวมของกำลังสาม: (n(n+1)/2)² โดยหา i สูงสุดที่ i³ ≤ ก่อน