라이브러리
[PHP] gmp_prob_prime - 숫자가 "아마도 소수"인지 확인
PHP의 gmp_prob_prime 함수
PHP의 `gmp_prob_prime` 함수는 주어진 정수에 대한 소수 가능성을 평가합니다. 소수 가능성이란, 주어진 정수가 소수인지 여부를 결정하는 것입니다. 소수는 1과 자기 자신만으로 나누어지는 수입니다.
함수의 매개변수
* `$n`: 정수에 대한 소수 가능성을 평가합니다.
* `$tries`: 소수 가능성을 평가하기 위한 시도 횟수입니다. 기본값은 5입니다.
함수의 반환값
* 소수 가능성이 0보다 크면, 소수 가능성이 100% 이상입니다.
* 소수 가능성이 0보다 작거나 같으면, 소수 가능성이 0% 이하입니다.
예제
#hostingforum.kr
php
<?php
// 2는 소수입니다.
echo gmp_prob_prime(2) . "
"; // 100
// 4는 소수가 아닙니다.
echo gmp_prob_prime(4) . "
"; // 0
// 10007은 소수입니다.
echo gmp_prob_prime(10007) . "
"; // 100
// 10009은 소수입니다.
echo gmp_prob_prime(10009) . "
"; // 100
// 10009*2 = 20018은 소수가 아닙니다.
echo gmp_prob_prime(20018) . "
"; // 0
?>
주의사항
* `gmp_prob_prime` 함수는 소수 가능성을 평가하기 위해 여러 시도를 수행합니다. 시도 횟수는 `$tries` 매개변수로 지정할 수 있습니다.
* 소수 가능성이 100% 이상이면, 주어진 정수가 소수일 수 있습니다. 그러나 소수 가능성이 0% 이하이면, 주어진 정수가 소수가 아닐 수 있습니다.
* `gmp_prob_prime` 함수는 PHP 5.6 이상에서 사용할 수 있습니다.
소수 가능성을 평가하는 방법
소수 가능성을 평가하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 Pollard's rho 알고리즘을 사용하는 것입니다. 이 알고리즘은 소수 가능성을 평가하기 위해 여러 시도를 수행합니다. 시도 횟수는 `$tries` 매개변수로 지정할 수 있습니다.
소수 가능성을 평가하는 코드
#hostingforum.kr
php
function gmp_prob_prime($n, $tries = 5) {
for ($i = 0; $i < $tries; $i++) {
$a = gmp_random_bits(gmp_strval($n));
$x = gmp_mod($a, $n);
$y = gmp_mod($x, $n);
while ($x != 1 && $x != $n - 1) {
$x = gmp_mod($x * $x, $n);
if ($x == 1) {
return 0;
}
}
if ($x != $n - 1) {
return 0;
}
}
return 100;
}
소수 가능성을 평가하는 예제
#hostingforum.kr
php
echo gmp_prob_prime(2) . "
"; // 100
echo gmp_prob_prime(4) . "
"; // 0
echo gmp_prob_prime(10007) . "
"; // 100
echo gmp_prob_prime(10009) . "
"; // 100
echo gmp_prob_prime(20018) . "
"; // 0
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.