
gmp_powm 함수는 음수 exponent를 받을 수 없다는 이유는, 제곱근을 계산할 때는 음수 exponent를 사용할 수 없기 때문입니다. gmp_powm 함수는 'a'를 'b'의 제곱으로 계산하는 함수입니다. 'b'가 음수인 경우, 'a'의 제곱근을 계산할 수 없기 때문에 오류가 발생합니다.
음수 exponent를 받을 수 있도록 변경하는 방법은, 'b'를 'b의 절댓값'으로 변경하는 것입니다. 'b'의 절댓값은 'b'를 0으로 나눈 후, 양수 또는 0으로 만드는 것입니다.
다음은 예제입니다.
#hostingforum.kr
c
#include
int main() {
mpz_t a, b, result;
mpz_init(a);
mpz_init(b);
mpz_init(result);
mpz_set_str(a, "2", 10);
mpz_set_str(b, "3", 10);
if (mpz_sgn(b) < 0) {
mpz_set_ui(b, mpz_abs(b));
}
mpz_powm(result, a, b, 10);
return 0;
}
위 예제에서는 'b'의 절댓값을 'b'에 저장한 후, gmp_powm 함수를 호출합니다.
2025-05-28 16:10