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. 【Java】 剑指offer(36) 二叉搜索树与双向链表

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不 ...

  2. window.location方法获取URL

    window.location方法获取URL 统一资源定位符 (Uniform Resource Locator, URL) 完整的URL由这几个部分构成: scheme://host:port/pa ...

  3. Python中 各种数字类型的判别(numerica, digital, decimal)

    一. 全角和半角 全角:是指一个全角字符占用两个标准字符(或两个半角字符)的位置. 全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.在全角中 ...

  4. 目标检测——IoU 计算

    Iou 的计算 我们先考虑一维的情况:令 \(A = [x_1,x_2], B = [y_1, y_2]\),若想要 \(A\) 与 \(B\) 有交集,需要满足如下情况: 简言之,要保证 \(A\) ...

  5. 算法进阶面试题03——构造数组的MaxTree、最大子矩阵的大小、2017京东环形烽火台问题、介绍Morris遍历并实现前序/中序/后序

    接着第二课的内容和带点第三课的内容. (回顾)准备一个栈,从大到小排列,具体参考上一课.... 构造数组的MaxTree [题目] 定义二叉树如下: public class Node{ public ...

  6. Wamp修改端口

    WAMP装好之后默认的端口是80,但是这个80端口呢,可以热门端口啊,迅雷,IIS都挺喜欢,在WIN7下本来还有1个进程也点80,让人伤脑筋啊,所以把它改掉,方法如下: 一.修改APACHE的监听端口 ...

  7. 网页图表Highcharts实践教程之认识Highcharts

    网页图表Highcharts实践教程之认识Highcharts 认识Highcharts Highcharts是国际知名的一款图表插件.它完全使用Javascript编写实现.其结构清晰,使用简单.开 ...

  8. BZOJ.3575.[HNOI2014]道路堵塞(最短路 动态SPFA)

    题目链接 \(Description\) 给你一张有向图及一条\(1\)到\(n\)的最短路.对这条最短路上的每条边,求删掉这条边后\(1\)到\(n\)的最短路是多少. \(Solution\) 枚 ...

  9. Windows10系统重置网络设置

    使用Windows10系统户很可能会遇到网络异常,连接不上网的情况? 如此,简易方法可以尝试下.重置网络,教程如下: 1.//按下WIN+X(或右键点击开始按钮),然后选择“命令提示符(管理员)”; ...

  10. linux ulimit具体修改服务器配置

    ulimit -a 显示当前用户的各种限制.   ulimit -n 的数值表示每个进程可以打开的文件数目.   一般情况下, ulimit -n 的数值是1024.   当进程打开的文件数目超过此限 ...