GNU Multiple Precision Arithmetic Library
首先,去libgmp官网下载最新的gmp包。(我下的是gmp-5.1.0)
然后gmp-5.1.0.tar.bz2。使用命令
tar -jvxf gmp-5.1.0.tar.bz2
进入gmp-5.1.0文件夹
cd gmp-5.1.0
接下来比较关键,在使用configure的时候要加上 --enable-cxx命令,否则不能使用c++库gmpxx.h(今年寒假的时候没加这个命令也可以,但现在貌似不行了- -)
./configure --enable-cxx
然后
make
make check
最后
sudo make install
就安装完成了。
可以试着编写一个样例程序:
#include<gmpxx.h> using namespace std; int main() { mpz_t a, b, c, d; mpz_init(a); mpz_init(b); mpz_init(c); mpz_init(d); //计算2的1000次方 mpz_init_set_ui(a, 2); mpz_pow_ui(c, a, 1000); gmp_printf("c = %Zd\n", c); //计算12345678900987654321*98765432100123456789 mpz_init_set_str(b, "12345678900987654321", 10);//10进制 mpz_init_set_str(c, "98765432100123456789", 10); mpz_mul(d, b, c); gmp_printf("d = %Zd\n", d); mpz_clear(a); mpz_clear(b); mpz_clear(c); mpz_clear(d); return 0; }
以上程序貌似是C的,编译时使用:
gcc name.c -o name.o -lgmp
对于C++,编码会方便一些:
#include<iostream> #include<gmpxx.h> using namespace std; int main() { mpz_class a; //计算2的1000次方,似乎C++就没有数学函数支持了? a = 1; for(int i = 0; i < 1000; i++) a *= 2; cout<<"2^1000 = "<<a<<endl; //计算-12345*9876543210123456789 mpz_class b, c; b = -12345; c = "98765432100123456789"; cout<<"b * c = "<<b * c<<endl; return 0; }
编译用:
g++ name.cpp -o name.o -lgmpxx -lgmp
(完)