Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP bcpowmod() 함수 완벽 정리 – 임의 정밀도 거듭제곱 모듈로 연산하기

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() 함수는 큰 수의 거듭제곱 나머지 연산을 효율적으로 처리할 수 있어, 암호화 알고리즘이나 대규모 수치 계산이 필요한 상황에서 특히 유용하게 활용됩니다.