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

PHP ผลรวมกำลังสามของจำนวนคู่

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

<?php
function sum_of_cubes_even($val) {
    $init_sum = 0;
    for ($i = 0; $i < $val; $i++) {
        if ($i % 2 != 0) {
            $init_sum += (2 * $i) * (2 * $i) * (2 * $i);
        }
    }
    return $init_sum;
}

echo "The sum of cubes of first 8 natural numbers that are even is " . sum_of_cubes_even(8);
?>

ผลลัพธ์

The sum of cubes of first 8 natural numbers that are even is 3968

ปัญหาใน Logic

โค้ด Loop $i=0 ถึง 7 เงื่อนไข $i % 2 != 0 (Odd i) แล้วคำนวณ (2*$i)³:

  • i=1: 2³ = 8
  • i=3: 6³ = 216
  • i=5: 10³ = 1000
  • i=7: 14³ = 2744
  • Sum = 8+216+1000+2744 = 3968

แต่ "First 8 even numbers" ควรเป็น 2,4,6,8,10,12,14,16 (8 ตัว)

โค้ดให้แค่ 4 ตัว (i=1,3,5,7)

Correct Implementation

Case 1: First N Even Numbers

<?php
function sum_cubes_first_n_evens($n) {
    $sum = 0;
    for ($i = 1; $i <= $n; $i++) {
        $even = 2 * $i;
        $sum += $even * $even * $even;
    }
    return $sum;
}

echo sum_cubes_first_n_evens(8);  // 2³+4³+...+16³ = 18496
?>

Case 2: Even Numbers Up To Limit

<?php
function sum_cubes_evens_upto($limit) {
    $sum = 0;
    for ($i = 2; $i <= $limit; $i += 2) {
        $sum += $i * $i * $i;
    }
    return $sum;
}

echo sum_cubes_evens_upto(16);  // 18496
?>

Mathematical Formula

Sum of cubes of first n even numbers = 8 × Sum of cubes of first n naturals = 8 × [n(n+1)/2]² = 2n²(n+1)²

<?php
function sum_cubes_evens_formula($n) {
    return 2 * $n * $n * ($n + 1) * ($n + 1);
}

echo sum_cubes_evens_formula(8);  // 18496
?>