숫자 'x' 또는 숫자 'y'로 나누어지는 처음 n개의 자연수의 합을 구하려면 등차수열의 합 공식과 포함-배제 원리를 활용하면 됩니다. 해당 코드는 다음과 같습니다.
예제
<?php
function sum_of_nums($n_val, $x_val, $y_val)
{
$val_1; $val_2; $val_3;
$val_1 = floor(((int)$n_val / $x_val)) * (2 * $x_val + (int)((int)$n_val / $x_val - 1) * $X) / 2;
$val_2 = floor(((int)$n_val / $y_val)) * (2 * $y_val + (int)((int)$n_val / $y_val - 1) * $y_val) / 2;
$val_3 = floor(((int)$n_val / ($x_val * $y_val))) * (2 * ($x_val * $y_val) + ((int)$n_val / ($x_val * $y_val) - 1) * (int)($x_val * $y_val))/ 2;
return ceil($val_1 + ($val_2 - $val_3));
}
$n_val = 11;
$x_val = 2;
$y_val = 5;
print_r("The sum of first 11 natural numbers divisible by 2 or 5 is ");
echo sum_of_nums($n_val, $x_val, $y_val);
?>출력
The sum of first 11 natural numbers divisible by 2 or 5 is 15
코드 설명
위 코드에서는 'sum_of_nums'라는 함수를 정의하여 두 개의 특정 값으로 나누어지는지 여부를 검사한 뒤, 세 가지 값을 계산합니다.
- $val_1: x로 나누어지는 수들의 합
- $val_2: y로 나누어지는 수들의 합
- $val_3: x와 y의 곱(x×y)으로 나누어지는 수들의 합으로, 중복 계산을 제거하는 역할을 합니다.
함수 외부에서는 대상이 되는 숫자(n)와 두 개의 특정 값(x, y)이 정의되며, 이 값들을 매개변수로 전달하여 함수를 호출합니다. 최종 결과는 포함-배제 원리에 따라 val_1 + val_2 − val_3 형태로 계산되고, 그 결과가 콘솔에 출력됩니다.