PHP를 사용하면 간단한 함수 하나만으로 특정 숫자가 소수(prime number)인지 아닌지 쉽게 판별할 수 있습니다. 이번 글에서는 직접 작성한 예제 코드를 통해 소수 판별 로직을 단계별로 살펴보겠습니다.
소수 판별 원리
소수란 1과 자기 자신 외에는 약수를 가지지 않는 1보다 큰 자연수입니다. 따라서 어떤 숫자가 2부터 그 숫자의 절반까지의 값으로 나누어 떨어지지 않는다면, 그 숫자는 소수라고 할 수 있습니다.
예제 코드
<?php
function check_prime($num)
{
if ($num == 1)
return 0;
for ($i = 2; $i <= $num/2; $i++)
{
if ($num % $i == 0)
return 0;
}
return 1;
}
$num = 47;
$flag_val = check_prime($num);
if ($flag_val == 1)
echo "It is a prime number";
else
echo "It is a non-prime number"
?>
실행 결과
It is a prime number
코드 설명
check_prime이라는 이름의 사용자 정의 함수를 통해 숫자의 소수 여부를 확인합니다. 동작 과정은 다음과 같습니다.
- 함수에 소수 여부를 확인할 숫자가 매개변수($num)로 전달됩니다.
- 입력값이 1이면 소수가 아니므로 즉시 0을 반환합니다.
- 2부터 해당 숫자의 절반($num/2)까지 반복문을 돌며 나머지 연산(%)으로 나누어 떨어지는지 검사합니다. 나누어 떨어지는 값이 하나라도 있으면 약수가 존재하는 것이므로 0을 반환합니다.
- 모든 검사를 통과하면 소수임을 의미하는 1을 반환합니다.
이후 변수 $num에 확인할 숫자 47을 대입하고, 이 값을 인자로 넘겨 check_prime 함수를 호출합니다. 반환된 값($flag_val)이 1이면 "It is a prime number", 그렇지 않으면 "It is a non-prime number"라는 메시지가 화면에 출력됩니다. 위 예제에서 47은 소수이므로 "It is a prime number"가 출력되는 것을 확인할 수 있습니다.