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

การหาผลรวมของเลขยกกำลังสามสมบูรณ์ถึง n ใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน 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³ ≤ ก่อน