반복문 없이 간단한 수학 공식만으로도 주어진 범위 안에 있는 홀수들의 합을 손쉽게 구할 수 있습니다. 여기서 활용되는 핵심 원리는 '처음 n개의 홀수(1, 3, 5, ...)의 합은 n²과 같다'는 사실입니다. 아래 예제 코드를 통해 확인해 보겠습니다.
예제
<?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 "3과 23 사이의 홀수 자연수의 합은 ", num_in_range($low, $high);
?>출력 결과
3과 23 사이의 홀수 자연수의 합은 143
코드 설명
odd_num_sum() 함수는 1부터 입력값 $val까지 범위에 포함된 홀수의 개수를 먼저 계산한 뒤, 그 값을 제곱하여 해당 범위 내 모든 홀수의 합을 반환합니다. 예를 들어 23까지의 홀수는 총 12개이며, 12 × 12 = 144가 됩니다.
num_in_range() 함수는 매개변수로 전달받은 두 숫자 사이 구간의 홀수 합을 구합니다. 상한값까지의 홀수 합에서 하한값 바로 앞($low - 1)까지의 홀수 합을 빼는 방식으로, 원하는 구간의 합만 계산됩니다.
두 함수 외부에서는 하한값($low = 3)과 상한값($high = 23)을 정의한 후, 이 값들을 인자로 전달하여 num_in_range() 함수를 호출하고, 그 결과를 콘솔에 출력합니다.
실제로 3부터 23 사이의 홀수(3, 5, 7, ..., 23)를 모두 더하면 143으로, 실행 결과와 일치합니다. 참고로 (int) 형 변환은 나눗셈 연산 이후에 적용되어야 하므로, (int)(($val + 1) / 2)처럼 괄호의 위치에 유의해야 정확한 홀수 개수가 계산됩니다.