一个开源的高精度运算库——gmp

原创 2008年12月18日 22:29:00
全称是GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库,官方网站是:http://gmplib.org/
它的功能非常强大,接口很简单,文档详尽,有C风格的接口也有C++的精心封装后的接口,其中不但有普通的整数、实数、浮点数的高精度运算,还有随机数生成,尤其是提供了非常完备的数论中的运算接口,比如Miller-Rabin素数测试算法,大素数生成,欧几里德算法,求域中元素的逆,Jacobi符号,legendre符号等。
它本身提供了很多例子程序,学习过程非常快,很容易将它们集成到自己的代码中去。
下面是最近做一个加密算法的时候使用gmp提供的大素数生成的一段程序,功能是找到给定数量的不小于2^127的素数,其逻辑就像打印一个字符串那样简单:
#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
 
int main(int argc, char **argv) {
    mpz_t begin, m1, m2;
    int count;
 
    /* set begin to 2^127 */
    mpz_init_set_str(begin, "170141183460469231731687303715884105728", 0);
 
    count = (argc==1)?10:atoi(argv[1]);
 
 
    while(count--) {
        mpz_nextprime(begin, begin);
        gmp_printf("%Zd/n", begin);
    }
 
    mpz_clear(begin);
    return 0;
}
生成的素数如下:
170141183460469231731687303715884105757
170141183460469231731687303715884105773
170141183460469231731687303715884105793
170141183460469231731687303715884105829
170141183460469231731687303715884105851
170141183460469231731687303715884105979
170141183460469231731687303715884106001
170141183460469231731687303715884106031
170141183460469231731687303715884106123
170141183460469231731687303715884106207
170141183460469231731687303715884106213
170141183460469231731687303715884106231
170141183460469231731687303715884106273
170141183460469231731687303715884106303
170141183460469231731687303715884106309
 
 

C++高精度运算模板

用C++实现大数类
  • DaiHaoC83E15
  • DaiHaoC83E15
  • 2014年04月06日 17:16
  • 4882

RSA加/解密算法——gmp大数库C++实现

gmp库c++接口的资料,网络上相对较少,说几乎没有更
  • dzn9966
  • dzn9966
  • 2014年06月01日 15:13
  • 2081

GMP大数库VC使用入门教程

Winxos 2009-9-29 GMP是GUN的一套大数库,提供了数百个基础函数,执行效率比较高,但是网上相对来说详细的教程比较少,本教程为大家介绍如何在windows ,vc6.0开发环境下...
  • x82488059
  • x82488059
  • 2013年05月17日 16:48
  • 2807

在python中用gmpy实现高精度计算

https://code.google.com/p/gmpy/wiki/UsingGmpy2AndMpfr  点击打开链接 Using gmpy2 and mpfr...
  • stereohomology
  • stereohomology
  • 2014年02月27日 08:07
  • 5186

gmp大数运算库 window下安装配置和使用(上)

GMP大数运算库,是一个开源的数学运算库,它可以用于任意精度的数学运算,包括有符号整数、有理数和浮点数。它本身并没有精度限制,只取决于机器的硬件情况。GMP 的主要目标应用领域是密码学的应用和研究、 ...
  • u012629110
  • u012629110
  • 2016年04月22日 15:38
  • 4424

大数运算(高精度) (六)—— 大数求幂

/** 大数(高精度)求幂 **/ //输入两个数字 m(可以带小数点),n,求m的n次方 #include #include #include char multiply[1000]; v...
  • GooMaple
  • GooMaple
  • 2012年07月30日 16:21
  • 3333

高精度运算——大数阶乘、排列、组合

package org.sugite.tools; import java.util.Arrays; /* * @topic:求1000以内的阶乘、排列、组合 */ public class ...
  • Sugite
  • Sugite
  • 2011年11月12日 20:07
  • 966

高精度运算——实数乘法

/* * @topic:实数乘法 */ import java.util.Arrays; import java.util.Scanner; import java.util.regex.Patter...
  • Sugite
  • Sugite
  • 2011年11月13日 10:38
  • 463

POJ 1001:Exponentiation —— 高精度浮点数运算

总时间限制: 500ms 内存限制: 65536kB 描述 Problems involving the computation of exact values of very large mag...
  • pku_Coder
  • pku_Coder
  • 2017年07月08日 11:02
  • 196

整数高精度运算的库(加法,减法,乘法,除法,取模)

这几天开始做些ACM的Online Judge题目,遇到了个数据范围有10^100的题目,原题 是求两个整数的最小公倍数,没用高精写好算法后发现需要的运算类型比较多,基本除了加法没用到其他的都要,于是...
  • hiiiiiu
  • hiiiiiu
  • 2011年05月28日 18:26
  • 2476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个开源的高精度运算库——gmp
举报原因:
原因补充:

(最多只允许输入30个字)