1.计算2^1000
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gmp.h>
int main()
{
mpz_t a,b;
mpz_init(a);
mpz_init(b);
mpz_init_set_ui(a, 2);
mpz_pow_ui(b, a, 1000);
gmp_printf("b = %Zd\n", b);
mpz_clear(a);
mpz_clear(b);
return 0;
}
2.计算12345678900987654321*98765432100123456789
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gmp.h>
int main()
{
mpz_t a,b,c;
mpz_init(a);
mpz_init(b);
mpz_init(c);
mpz_init_set_str(a, "12345678900987654321", 10);
mpz_init_set_str(b, "98765432100123456789", 10);
mpz_mul(c, a, b);
gmp_printf("c = %Zd\n", c);
mpz_clear(a);
mpz_clear(b);
mpz_clear(c);
return 0;
}
3.计算大于12345678900987654321的最小质数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gmp.h>
int main()
{
mpz_t a,b;
mpz_init(a);
mpz_init(b);
mpz_init_set_str(a, "12345678900987654321", 10);
mpz_nextprime(b, a);
gmp_printf("b = %Zd\n", b);
mpz_clear(a);
mpz_clear(b);
return 0;
}
4.编译
$ gcc -o case-1 case-1.c -lgmp
$ gcc -o case-2 case-2.c -lgmp
$ gcc -o case-3 case-3.c -lgmp