// http://gmplib.org/manual/ #include #include #include void print_num(mpz_t num); int main(void) { mpz_t a, b, c, q, r; mpz_init(a); mpz_init(b); mpz_init(c); mpz_init(q); mpz_init(r); mpz_set_si(a, 100); mpz_set_si(b, 30); printf("--init--\n"); printf("a = "); print_num(a); printf("b = "); print_num(b); // 加算 http://gmplib.org/manual/Integer-Arithmetic.html#Integer-Arithmetic printf("--add--\n"); mpz_add(c, a, b); print_num(c); // 減算 printf("--sub--\n"); mpz_sub(c, a, b); print_num(c); // 乗算 printf("--mul--\n"); mpz_mul(c, a, b); print_num(c); // 除算・剰余 http://gmplib.org/manual/Integer-Division.html#Integer-Division printf("--div.mod--\n"); mpz_fdiv_qr(q, r, a, b); print_num(q); print_num(r); // 左シフト printf("--left shift--\n"); mpz_mul_2exp(c, a, 2); print_num(c); // 冪乗 http://gmplib.org/manual/Integer-Exponentiation.html#Integer-Exponentiation printf("--power--\n"); mpz_pow_ui(c, a, 3); print_num(c); mpz_clear(a); mpz_clear(b); mpz_clear(c); mpz_clear(q); mpz_clear(r); return 0; } void print_num(mpz_t num) { char *str; str = mpz_get_str(NULL, 10, num); printf("%s\n", str); free(str); }