大数高精度计算库gmp简介
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简介的更多相关文章
- Raphael Js矢量库API简介:
Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...
- c++ 日志输出库 spdlog 简介(1)
参考文章: log库spdlog简介及使用 - 网络资源是无限的 - CSDN博客 http://blog.csdn.net/fengbingchun/article/details/78347105 ...
- Python3.x:日期库dateutil简介
Python3.x:日期库dateutil简介 安装 pip install python-dateutil 关于parser #字符串可以很随意,可以用时间日期的英文单词,可以用横线.逗号.空格等做 ...
- STL标准模板库(简介)
标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...
- 高精度运算库gmp
网址:www.gmplib.org 我下载的是 6.1.2版本:https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2 执行操作如下: 1. tar -jv ...
- lua工具库penlight--01简介
lua的设计目标是嵌入式语言,所以和其它动态语言(如python.ruby)相比其自带的库缺少很多实用功能. 好在有lua社区有Penlight,为lua提供了许多强大的功能,接下来的几篇博客,我会简 ...
- Python 外部函数调用库ctypes简介
Table of Contents 1. 参考资料 2. ctypes简介 2.1. 数据类型 2.2. 调用.so/.dll 2.2.1. 加载动态链接库 2.2.2. 调用加载的函数 2.2.3. ...
- libcurl库的简介(一)
一.Libcurl库简介 LibCurl是免费的客户端URL传输库,支持FTP,FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE ,LDAP ...
- Java SSH库使用简介:Apache sshd和JSch(Java Secure Channel)
1.Apache sshd Apache sshd是一个SSH协议的100%纯Java库,支持客户端和服务器.sshd库基于Apache MINA项目(可伸缩高性能的异步IO库). 官方网站:http ...
随机推荐
- Centos 6.5安装mysql
转载自:https://www.cnblogs.com/leffss/p/8512773.html 一.安装前准备 安装采用二进制包方式,软件包5.7.19版本下载地址:https://dev.mys ...
- jquery中方法扩展 ($.fn & $.extend) 学习笔记
A.$.fn 1.$.fn.method() 函数为jQuery对象扩展一个属性和方法(主要用于扩展方法) :method 为自定义方法名 ($.fn 等效 $.prototype) $.fn.bor ...
- Flutter常用组件(Widget)解析-Image
显示图片的组件 以下是几种加载图片路径方式: Image.asset 加载asset项目资源中的文件 Image.network 加载网络资源图片,通过url加载 Image.file 加载本地文件中 ...
- MySQL 5.7基于GTID复制的常见问题和修复步骤(二)
[问题二] 有一个集群(MySQL5.7.23)切换后复制slave报1236,其实是不小心在slave上执行了事务导致 Got fatal error 1236 from master when r ...
- js格式化显示文件大小(bytes 转 KB、、、)
//格式化文件大小 function renderSize(value){ if(null==value||value==''){ return "0 Bytes"; } var ...
- JAXB注解 @XmlRootElement 及XML文件解析详解
@Retention(value=RUNTIME) @Target(value=TYPE) public @interface XmlRootElement @Inherited @Retention ...
- nodejs那些事儿
http://www.nodeclass.com/ https://cnodejs.org/ 当前版本,v6.11.2 安装node时,牵扯features的选择,在不了解的情况下,我选择了第1个.网 ...
- [ 转载 ] Handler详解
带着问题学习 Android Handler 消息机制 Marker_Sky 关注 0.4 2018.02.06 18:04* 字数 3992 阅读 541评论 0喜欢 13 学习 Androi ...
- python urllib2对http的get,put,post,delete
#GET: #!/usr/bin/env python# -*- coding:utf-8 -*-import urllib2def get(): URL = 'www.baidu.com' ...
- dns安全可视化 设计
这么设计 dns 常见的 安全分类.显示出来. dns 的安全数据,显示出来. 各种相关数据. 展示方式, 图标,饼图,柱状图等等,多屏拼接. 前端的可视化展示 方式 由 文慧 提供 或者实现. 相关 ...