
gmp_sqrt 함수는 반올림을 하게 되는데, 정수 제곱근만을 구하고 싶다면 다음과 같이 사용할 수 있습니다.
- 정수 제곱근을 구하는 경우:
- 정수 제곱근을 구하는 경우, 정수 제곱근이 반올림되지 않도록 하려면, 정수 제곱근의 제곱을 계산하여 원래 수와 비교하여 반올림 여부를 결정해야 합니다.
#hostingforum.kr
c
#include
int main() {
mpz_t num, sqrt;
mpz_init(num);
mpz_init(sqrt);
mpz_set_str(num, "25", 10); // 예를 들어, 25를 사용합니다.
mpz_sqrt(sqrt, num);
mpz_t temp;
mpz_init(temp);
mpz_mul(temp, sqrt, sqrt);
if (mpz_cmp(temp, num) == 0) {
printf("정수 제곱근: %sn", mpz_get_str(NULL, 10, sqrt));
} else {
printf("정수 제곱근이 아닙니다.n");
}
mpz_clear(num);
mpz_clear(sqrt);
mpz_clear(temp);
return 0;
}
- 가장 큰 정수 제곱근을 구하는 경우:
- 가장 큰 정수 제곱근을 구하는 경우, 정수 제곱근의 제곱을 계산하여 원래 수보다 크면 반올림이 된 정수 제곱근을 사용하고, 원래 수보다 작으면 반올림이 된 정수 제곱근을 사용합니다.
#hostingforum.kr
c
#include
int main() {
mpz_t num, sqrt;
mpz_init(num);
mpz_init(sqrt);
mpz_set_str(num, "26", 10); // 예를 들어, 26을 사용합니다.
mpz_sqrt(sqrt, num);
mpz_t temp;
mpz_init(temp);
mpz_mul(temp, sqrt, sqrt);
if (mpz_cmp(temp, num) > 0) {
printf("정수 제곱근: %sn", mpz_get_str(NULL, 10, sqrt));
} else {
mpz_sub_ui(sqrt, sqrt, 1);
printf("정수 제곱근: %sn", mpz_get_str(NULL, 10, sqrt));
}
mpz_clear(num);
mpz_clear(sqrt);
mpz_clear(temp);
return 0;
}
이러한 방법으로 정수 제곱근을 구할 수 있습니다.
2025-05-16 07:49