高精度運算庫gmp


網址:www.gmplib.org

我下載的是 6.1.2版本:https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2

執行操作如下:

1.  tar -jvxf gmp-6.1.2.tar.bz2
2.  ./configure --enable-cxx
注意:在configure的時候一定要加上--enable-cxx,否則不能使用C++庫gmpxx.h
3.  make
4.  make check
5.  sudo make intall


用c語言編一個例子:

#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++要簡單很多:

#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;
}

注意,編譯時要鏈接gmp庫:

g++ name.cpp -o name.o -lgmpxx -lgmp

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM