大数库GMP测试
0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
1. 用自己8位学号建两个文件夹xxxxxxxxsrc,xxxxxxxx,到[GMP官网https://gmplib.org/](https://gmplib.org/)下载最新代码到201x1xxxsrc,编译代码并把GMP库安装到201x1xxx文件夹。(5')
2. 基于GMP的大数库编写测试代码测试大数运算,计算2的N次方,N为你学号的后四位(5‘)
3. 基于GMP的大数库计算你以及前面5位同学和后面5位同学的8位学号的乘积,N为你学号的后四位(5‘)
4. 提交代码(或代码链接)和运行结果截图
基于GMP的大数库编写测试代码测试大数运算,计算2的N次方,N为你学号的后四位
代码如下:
#include<gmp.h>
int main()
{
mpz_t a, c;
mpz_init(a);
mpz_init(c);
//计算2的1316次方
mpz_init_set_ui(a, 2);
mpz_pow_ui(c, a, 1316);
gmp_printf("c = %Zd\n", c);
mpz_clear(a);
mpz_clear(c);
return 0;
}
基于GMP的大数库计算你以及前面5位同学和后面5位同学的8位学号的乘积,N为你学号的后四位(5‘)
代码如下:
#include<gmp.h>
int main()
{
mpz_t a, b, c, d;
mpz_init(a);
mpz_init(b);
mpz_init(c);
mpz_init(d);
mpz_init_set_str(a,"20191311",10);
mpz_init_set_str(b,"1",10);
mpz_init_set_str(d,"1",10);
for (int i=0;i<11;i++)
{
mpz_mul(d,d,a);
mpz_add(a,a,b);
}
gmp_printf("d = %Zd\n", d);
mpz_clear(a);
mpz_clear(b);
mpz_clear(d);
return 0;
}