현재 위치: > 최신 기사 목록> PHP의 GMP_LEGENDRE () 함수에 대한 자세한 설명 : 사각형 잔류 및 2 차 비 레인을 판단하는 방법

PHP의 GMP_LEGENDRE () 함수에 대한 자세한 설명 : 사각형 잔류 및 2 차 비 레인을 판단하는 방법

gitbox 2025-06-10

gmp_legendre () 함수는 무엇입니까?

PHP에서 GMP_LEGENDRE ()는 GMP 확장자가 LEGENDRE 기호를 계산하기 위해 제공하는 함수입니다. 이 기능은 특히 정수가 프라임 모듈러스 아래의 사각형 잔류 물인지 판단 할 때 숫자 이론에서 널리 사용됩니다.

함수 정의는 다음과 같습니다.

 int gmp_legendre(GMP $a, GMP $p)

여기서 $ a 는 판단 된 정수이고 $ p는 홀수 소수이며 두 매개 변수 모두 GMP 유형이어야합니다.

lejeune 기호의 정의와 의미

레즈안더 기호는 정수가 프라임 모듈러스 아래의 2 차 잔차인지를 나타내는 수학적 표기법입니다. 수학적 정의는 다음과 같습니다.

(a/p) = a (p? 1)/2 mod p

여기에 A 는 모든 정수이고 P는 홀수 소수입니다. 결과는 다음과 같습니다.

  • 결과가 1 인 경우 a는 p 의 제곱 잔차임을 의미합니다.
  • 결과가 ? 1 인 경우, AP 의 2 차 비 침식자임을 의미합니다.
  • 결과가 0 인 경우 ap 에는 공통 요소 또는 a = 0이 있음을 의미합니다.

GMP_LEGENDRE () 함수의 실제 사용량

다음으로 GMP_LEGENDRE ()를 사용하여 정수가 사각형 잔류 또는 2 차 비 에메인 링 여부를 결정하는 방법을 설명하기 위해 두 가지 예를 사용합니다.

숫자가 제곱인지 여부를 결정하십시오

 
$a = gmp_init(5);
$p = gmp_init(7);
$ls = gmp_legendre($a, $p);
if ($ls == 1) {
    echo "$a 예 $p 남은 정사각형";
} else {
    echo "$a 不예 $p 남은 정사각형";
}

출력은 다음과 같습니다. "5는 남은 정사각형 7"입니다.

숫자가 2 차 및 비 에해질 지 여부를 결정하십시오

 
$a = gmp_init(5);
$p = gmp_init(11);
$ls = gmp_legendre($a, $p);
if ($ls == -1) {
    echo "$a 예 $p 2 차 비 에해요";
} else {
    echo "$a 不예 $p 2 차 비 에해요";
}

이 코드의 출력은 다음과 같습니다. "5는 11의 2 차 비 에해요가 아닙니다".

gmp_legendre ()를 사용할 때 메모

GMP_LEGENDRE () 함수를 호출 할 때는 다음 사항에주의를 기울여야합니다.

  • 두 매개 변수 모두 유형 GMP의 정수 여야합니다.
  • 두 번째 매개 변수 $ p는 홀수 소수 여야합니다.
  • 이 기능을 사용하기 전에 PHP가 GMP 확장을 설치하고 활성화했는지 확인하십시오.

요약

GMP_LEGENDRE ()는 정수가 프라임 모듈러스 하에서 정사각형 잔류인지 여부를 결정하는 데 적합한 실제 PHP 수학적 함수입니다. PHP와 숫자 이론의 조합을 배우기위한 좋은 도구 일뿐 만 아니라 암호화, 알고리즘 경쟁 및 기타 분야에서 실질적인 적용 가치도 있습니다. 그것을 사용할 때는 GMP 유형 및 매개 변수 요구 사항에주의를 기울이면 Lejander 기호의 계산을 성공적으로 완료 할 수 있습니다.

참조

  • Liu Rujia. "정수 및 다항식 알고리즘". 베이징 : Tsinghua University Press, 2008.