GMP介绍

GMP是The GNU MP Bignum Library,是一个开源的数学运算库,它可以用于任意精度的数学运算,包括有符号整数、有理数和浮点数。它本身并没有精度限制,只取决于机器的硬件情况。 更多详情可能访问官方网站 ​​​

环境所需软件

  • MinGW
  • pexports

点击上面两个软件名就能下载对应的安装包,如果下载不了,可以到我的网盘上下载,地址如下: 链接: ​------ 这里是赶时间分割线 ------ 如果你很赶时间,我网盘上也有已经编译好的.h .lib .dll文件,可以直接下载,当然在这里下载以后,下面的内容也可以不用看了,地址如下: 安装过程

1.安装MinGW 安装后组件选择"mingw32-base","mingw32-gcc-g++","mingw32-gmp" 安装组件的过程中需要保持网络连接正常。 本文假设MinGW的安装路径为默认的路径 C:\MinGW

2.安装pexports 将下载回来的pexports.exe复制进 C:\MinGW\bin

3.生成lib文件 到了这一步,GMP就已经在Windows里安装好了,我们只要将gmp.h和libgmp.lib文件载入我们的VS工程就可以使用GMP库了。 gmp.h 位于 C:\MinGW\include 目录下 libgmp.lib 则需要我们手动生成,我们可以根据 C:\MinGW\bin\libgmp-10.dll 来生成相应的lib文件,步骤如下:

cd C:\MinGW\bin
pexports.exe libgmp-10.dll > libgmp-10.def
lib /def:libgmp-10.def


这时目录下就会出现 libgmp.lib 文件了。

如果提示 lib 命令不存在,请将VS的相关路径写入环境变量,比如我的是 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin

使用示例

这里我以VS2010做示例,首先我们要将gmp.h和libgmp.lib文件载入工程。 代码如下:

#include "gmp.h"
#pragma comment(lib,"libgmp-10.lib")

int main()
{
mpz_t t; //mpz_t 为GMP内置大数类型
mpz_init(t); //大数t使用前要进行初始化,以便动态分配空间
mpz_ui_pow_ui(t, 2, 100); //GMP所有函数基本都是以mpz打头
gmp_printf("2^100=%Zd\n", t); //输出大数,大数的格式化标志为%Zd
mpz_clear(t);
scanf_s("%s");
return 0;
}


结语

写完以后才发现好像也不难,挺简单的,然而我竟然搞了一下午