1、编译安装,我用的ubuntu18.04

$sudo apt-get install m4  //默认没安装,gmp用这个
$tar -jvxf gmp-6.1..tar.bz2 //解压
$cd gmp-6.1.
$./configure --enable-cxx //开启c++支持
$make
$make check //注意必须检测一下,gmp官方特别提醒的
$sudo make install

主要函数:

初始化函数:

mpz_t a, b, c;
mpz_init(a);
mpz_init_set_str(b, "", );
mpz_init_set_str(c, "", );

输出函数:

gmp_printf("%Zd\n", b);

加法,减法,乘法:

mpz_add(a, b, c);
mpz_sub(a, b, c);
mpz_mul(a, b, c);

除法:

/*求商,向上取整*/
mpz_cdiv_q (a, b, c);
/*求余数,由于求商是向上取整,所以余数为0或者负数*/
mpz_cdiv_r (a, b, c); /*求商,向下取整*/
mpz_fdiv_q (a, b, c);
/*求余数,由于求商是向下取整,所以余数为0或者正数*/
mpz_fdiv_r (a, b, c);

比较:

/*b大于c,返回1;b等于c,返回0;b小于c,返回-1*/
mpz_cmp(b, c);

求平方根:

/*结果向下取整*/
mpz_sqrt(a, b);

最大公约数:

mpz_gcd(a, b, c);

判断是否是一个质数的次幂:

mpz_perfect_power_p(b);

幂运算:

mpz_pow_ui(a, b, );

2、例子:

#include <gmpxx.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
mpz_t a,b,c;
mpz_init(a);
mpz_init(b);
mpz_init(c);
gmp_scanf("%Zd%Zd",a,b);
mpz_add(c,a,b);
gmp_printf("c= %Zd\n",c);
return ;
}

编译:

$g++ test.cpp -o test -lgmp -lgmpxx结果: 

输入两个数,得到c为2数之和。

附录:一篇高质量应用gmp的文章:https://www.cnblogs.com/y3w3l/p/5947450.html

大数高精度计算库gmp简介的更多相关文章

  1. Raphael Js矢量库API简介:

    Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...

  2. c++ 日志输出库 spdlog 简介(1)

    参考文章: log库spdlog简介及使用 - 网络资源是无限的 - CSDN博客 http://blog.csdn.net/fengbingchun/article/details/78347105 ...

  3. Python3.x:日期库dateutil简介

    Python3.x:日期库dateutil简介 安装 pip install python-dateutil 关于parser #字符串可以很随意,可以用时间日期的英文单词,可以用横线.逗号.空格等做 ...

  4. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  5. 高精度运算库gmp

    网址:www.gmplib.org 我下载的是 6.1.2版本:https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2 执行操作如下: 1. tar -jv ...

  6. lua工具库penlight--01简介

    lua的设计目标是嵌入式语言,所以和其它动态语言(如python.ruby)相比其自带的库缺少很多实用功能. 好在有lua社区有Penlight,为lua提供了许多强大的功能,接下来的几篇博客,我会简 ...

  7. Python 外部函数调用库ctypes简介

    Table of Contents 1. 参考资料 2. ctypes简介 2.1. 数据类型 2.2. 调用.so/.dll 2.2.1. 加载动态链接库 2.2.2. 调用加载的函数 2.2.3. ...

  8. libcurl库的简介(一)

    一.Libcurl库简介 LibCurl是免费的客户端URL传输库,支持FTP,FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE ,LDAP ...

  9. Java SSH库使用简介:Apache sshd和JSch(Java Secure Channel)

    1.Apache sshd Apache sshd是一个SSH协议的100%纯Java库,支持客户端和服务器.sshd库基于Apache MINA项目(可伸缩高性能的异步IO库). 官方网站:http ...

随机推荐

  1. Linux 关闭网络管理服务

    1 将NetworkManager 服务设置开机不启动 chkconfig NetworkManager off 2将NetwokManager服务关闭 service NetworkManager ...

  2. KNN分类算法补充

    KNN补充: 1.K值设定为多大? k太小,分类结果易受噪声点影响:k太大,近邻中又可能包含太多的其它类别的点. (对距离加权,可以降低k值设定的影响) k值通常是采用交叉检验来确定(以k=1为基准) ...

  3. xml和map互转工具类

    /** * xml转map工具类 * @author zhangyao * */ public class XmlToMapUtil { /** * xml转map 不带属性 * @param xml ...

  4. Jedis入门

    一:介绍 1.Jedis的官网 2.使用 这个可以从上面的连接进入github. https://github.com/xetorthio/jedis 3.使用方式 或者使用jar包,不过这里我使用官 ...

  5. 2019最新最全HUSTOJ本地及云端服务器搭建(基于腾讯云服务器)

    在刚接触ACM的时候,对于那些在线测评的网站很感兴趣,就在网上搜索了一下,在Github上发现了一个有趣的项目,然后在 Github 上获取 了HUST OJ 的开源项目代码,根据网上的教程踩了无数的 ...

  6. BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)

    题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...

  7. angularJS常用的内置方法

    angular.lowercase(aaa); angular.uppercase(bbb); angular.isString(); angular.isNumber(); angular.isAr ...

  8. Convert a VMDK (VMWare) file to VHDX (Hyper-V)

    https://www.meziantou.net/2016/09/09/convert-a-vmdk-vmware-file-to-vhdx-hyper-v Microsoft provides a ...

  9. yum 安装 jenkins

    环境:已安装 tomcat 安装(如果yum下载速度比较忙可以下载下来再安装) yum -y install https://pkg.jenkins.io/redhat/jenkins-2.77-1. ...

  10. VirtualBox 扩展包卸载或安装失败(VERR_ALREADY_EXISTS)(转)

    文章出处:http://blog.csdn.net/leshami/article/details/9232229 最近在卸载VirtualBox出现了无法卸载的错误.提示为Failed to ins ...