ตัวอย่างโค้ด
<?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
?>