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

PHP gmp_legendre() 함수 – 두 GMP 숫자의 르장드르 기호(Legendre Symbol) 계산하기

gmp_legendre() 함수는 두 개의 GMP 숫자에 대한 르장드르 기호(Legendre Symbol)를 계산하는 함수입니다. 르장드르 기호는 정수론에서 널리 사용되는 수학적 개념으로, 어떤 수가 홀수 소수에 대해 이차 잉여인지를 판별할 때 활용됩니다.

이 함수의 반환 값은 PHP 버전에 따라 다음과 같이 달라집니다.

  • GMP 숫자 – PHP 5.5 및 그 이하 버전
  • GMP 객체 – PHP 5.6 및 그 이상 버전

문법(Syntax)

gmp_legendre(n1, n2)

매개변수(Parameters)

  • n1 – 첫 번째 GMP 숫자입니다. PHP 5.6 이상 버전에서는 GMP 객체를 사용할 수 있으며, 숫자 형태의 문자열도 허용됩니다.

  • n2 – 두 번째 GMP 숫자입니다. PHP 5.6 이상 버전에서는 GMP 객체를 사용할 수 있으며, 숫자 형태의 문자열도 허용됩니다.

반환 값(Return)

gmp_legendre() 함수는 계산 결과로 GMP 숫자(PHP 5.5 이하) 또는 GMP 객체(PHP 5.6 이상)를 반환합니다.

예제 1

다음은 gmp_legendre() 함수의 기본적인 사용 예제입니다.

<?php
   $n1 = 5;
   $n2 = 5;
   echo gmp_legendre($n1, $n2);
?>

출력 결과

0

n1과 n2가 같은 값(5)일 때 르장드르 기호의 결과는 0이 됩니다. 이는 나누는 수가 소수이고 피제수가 그 소수로 나누어떨어진다는 의미입니다.

예제 2

이번에는 서로 다른 값을 사용한 예제를 살펴보겠습니다.

<?php
   $n1 = 4;
   $n2 = 3;
   echo gmp_legendre($n1, $n2);
?>

출력 결과

1

결과가 1이라는 것은 4가 3에 대한 이차 잉여(quadratic residue)임을 의미합니다. 즉, 4는 3으로 나눈 나머지가 어떤 정수의 제곱과 일치하는 경우입니다.

정리

gmp_legendre() 함수는 큰 정수 연산을 위한 GMP 확장 모듈에서 제공되며, 암호학 알고리즘이나 수학적 검증 로직을 구현할 때 유용하게 사용됩니다. 반환 값이 0이면 나누어떨어지는 경우, 1이면 이차 잉여, -1이면 이차 비잉여(non-residue)를 나타냅니다.