PHP에서 bcpowmod() 함수는 임의 정밀도(arbitrary precision)의 밑(base) 숫자를 지수(exponent)만큼 거듭제곱한 뒤, 지정된 모듈러스(modulus)로 나눈 나머지를 계산하는 데 사용됩니다. 이 함수는 세 개의 임의 정밀도 숫자를 문자열 형태로 받아들이며, 결과를 지정된 소수점 자릿수에 맞춰 반환합니다.
문법(Syntax)
String bcpowmod($base, $exponent, $modulus, $scale)
매개변수(Parameters)
bcpowmod() 함수는 네 개의 매개변수를 받습니다: $base, $exponent, $modulus, 그리고 $scale.
$base − 왼쪽 피연산자를 나타내며, 문자열 타입의 매개변수입니다.
$exponent − 지수를 나타내는 오른쪽 피연산자 숫자입니다. 역시 문자열 타입의 매개변수입니다.
$modulus − 모듈러스(나누는 수)를 나타내는 피연산자를 받아들이며, 문자열 타입의 매개변수입니다.
$scale − 정수 타입의 매개변수로, (밑지수%모듈러스) 연산 결과에서 소수점 이하로 표현할 자릿수를 지정합니다. 기본값은 0입니다.
반환값(Return Value)
bcpowmod() 함수는 계산 결과를 문자열 형태로 반환합니다. 만약 모듈러스가 0이거나 지수가 음수일 경우에는 False를 반환합니다.
예제 1
<?php
// 임의 정밀도 입력 숫자
$base = "5";
$exponent = "7";
$mod = "7";
// base^exponent % mod 를 계산
$result = bcpowmod($base, $exponent, $mod);
echo "scale 없이 출력: ", $result;
?>
출력 결과
scale 없이 출력: 5
예제 2
<?php
// 임의 정밀도 입력 숫자
$base = "5";
$exponent = "7";
$mod = "7";
// scale 값 4 설정
$scale = 4;
// base^exponent % mod 를 계산
$result = bcpowmod($base, $exponent, $mod, $scale);
echo "scale 적용 후 출력: ", $result;
?>
출력 결과
scale 적용 후 출력: 5.0000
이처럼 bcpowmod() 함수는 큰 수의 거듭제곱 나머지 연산을 효율적으로 처리할 수 있어, 암호화 알고리즘이나 대규모 수치 계산이 필요한 상황에서 특히 유용하게 활용됩니다.