#include <gmp.h>
// 示例:计算10000!
int main(int argc, const char *argv[])
{
//定义3个多精度整数(multiple precision integer)变量
mpz_t z_i, z_s, z_o;
//初始化
mpz_init_set_str(z_i, "1", 10);
mpz_init_set_str(z_s, "1", 10);
mpz_init_set_str(z_o, "1", 10);
/*int mpz_init_set_str(mpz_t rop, char* str, int base)
@rop: 多精度整数变量
@str: 字符串
@base: 十进制
*/
//循环10000次,并进行乘法和加法
for (int i = 0; i < 10000; i++)
{
mpz_mul(z_s, z_s, z_i);
/*void mpz_mul(mpz_t rop, mpz_t op1, mpz_t op2)
即:rop = op1 * op2
*/
mpz_add(z_i, z_i, z_o);
/*void mpz_add(mpz_t rop, mpz_t op1, mpz_t op2);
即:rop = op1 + op2
*/
}
//按大整数的格式来输出结果
gmp_printf("%Zd\n", z_s);
//释放空间
mpz_clear(z_i);
mpz_clear(z_s);
mpz_clear(z_o);
getchar();
return 0;
}