PHP gmp_div_qr() 함수란?
PHP의 gmp_div_qr() 함수는 두 개의 GMP 숫자 사이에서 나눗셈 연산을 수행하고, 그 결과로 몫(quotient)과 나머지(remainder)를 동시에 반환하는 함수입니다. 큰 정수를 다루는 GMP 확장 모듈에서 나눗셈 결과를 한 번의 호출로 모두 얻고 싶을 때 유용하게 사용됩니다.
문법
gmp_div_qr(n1, n2)
매개변수
n1 − 첫 번째 GMP 숫자입니다. PHP 5.6 이상에서는 GMP 객체를 사용할 수 있으며, 숫자 문자열도 허용됩니다.
n2 − 두 번째 GMP 숫자입니다. 첫 번째 매개변수와 마찬가지로 PHP 5.6 이상에서는 GMP 객체를 사용할 수 있고, 숫자 문자열도 지원합니다.
반환값
gmp_div_qr() 함수는 나눗셈의 몫과 나머지를 배열(Array) 형태로 반환합니다.
- 배열의 첫 번째 요소
[0]: 나눗셈의 몫(GMP 객체) - 배열의 두 번째 요소
[1]: 나눗셈의 나머지(GMP 객체)
사용 예제
다음은 gmp_div_qr() 함수를 활용한 기본적인 예제입니다.
<?php
$n1 = gmp_init(129);
$n2 = gmp_init(9);
$a = gmp_div_qr($n1, $n2);
echo "몫: " . gmp_strval($a[0]) . "\n";
echo "나머지: " . gmp_strval($a[1]);
?>
위 예제에서는 gmp_init()으로 129와 9라는 두 개의 GMP 숫자를 생성한 뒤, gmp_div_qr() 함수로 나눗셈을 수행합니다. 반환된 배열에서 몫과 나머지를 각각 꺼내 출력하기 위해 gmp_strval() 함수를 함께 사용했습니다.
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Array
(
[0] => GMP Object ( [num] => 14 )
[1] => GMP Object ( [num] => 3 )
)
결과 해석
129를 9로 나누면 몫은 14, 나머지는 3입니다. 즉, 129 = 9 × 14 + 3의 관계가 성립하며, gmp_div_qr() 함수 하나만으로 몫과 나머지를 동시에 얻을 수 있습니다. 별도로 gmp_div_q()와 gmp_div_r()을 각각 호출해야 하는 번거로움 없이 효율적으로 처리할 수 있다는 점이 이 함수의 가장 큰 장점입니다.