रेंज में विषम संख्याओं का योग
उदाहरण
<?php
function odd_num_sum($val) {
$entries = (int)(($val + 1) / 2);
$sum = $entries * $entries;
return $sum;
}
function num_in_range($low, $high) {
return odd_num_sum($high) - odd_num_sum($low - 1);
}
$low = 3;
$high = 23;
echo "The sum of odd natural numbers between the numbers 3 and 23 is " . num_in_range($low, $high);
?>
आउटपुट
The sum of odd natural numbers between the numbers 3 and 23 is 141.75
⚠️ आउटपुट में समस्या
आउटपुट 141.75 आ रहा है जो गलत है (योग पूर्णांक होना चाहिए)। समस्या odd_num_sum फंक्शन में है।
गणितीय सूत्र
पहले n विषम संख्याओं का योग = n²
1 से N तक विषम संख्याओं की संख्या = ceil(N/2) = (N+1)/2 (इंटीजर डिवीजन)
सही इम्प्लीमेंटेशन
<?php
function sumOddUpTo(int $n): int {
// 1 से n तक विषम संख्याओं का योग
$count = (int)(($n + 1) / 2);
return $count * $count;
}
function sumOddInRange(int $low, int $high): int {
if ($low > $high) return 0;
// low से high तक विषम संख्याओं का योग
return sumOddUpTo($high) - sumOddUpTo($low - 1);
}
// टेस्ट
$low = 3;
$high = 23;
// विषम संख्याएं: 3,5,7,9,11,13,15,17,19,21,23
// योग = 143
echo "Sum of odd numbers from $low to $high: " . sumOddInRange($low, $high); // 143
?>
सत्यापन
3+5+7+9+11+13+15+17+19+21+23 = (3+23) + (5+21) + (7+19) + (9+17) + (11+15) + 13 = 26*5 + 13 = 130 + 13 = 143 ✓
लूप-आधारित विकल्प (सरल)
<?php
function sumOddLoop(int $low, int $high): int {
$sum = 0;
// पहला विषम नंबर ढूंढें
if ($low % 2 == 0) $low++;
for ($i = $low; $i <= $high; $i += 2) {
$sum += $i;
}
return $sum;
}
?>