找回密码
 欢迎注册
查看: 9894|回复: 7

[原创] GMP库简单入门教程

[复制链接]
发表于 2009-9-29 18:54:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
本帖最后由 winxos 于 2009-9-29 18:58 编辑

论坛里不少老大们的程序用到了GMP库,但是还是有很多新人不太了解VC下GMP的具体使用,我写了一篇简易教程,关于GMP的初步使用,希望对不明白的人有所帮助,如果有好的意见或建议欢迎指出。
[原文链接] http://weolee.spaces.live.com/blog/cns!52FBB34F02E029D9!213.entry

哎呀,粘贴过来格式太乱了,大家还是去上面的链接看吧,下面附上一个文章中提到的下载地址
http://d.namipan.com/sd/929339  
包括了一份WOLD 文档以及编译好的静态库跟常用函数手册。

评分

参与人数 1威望 +3 贡献 +2 鲜花 +2 收起 理由
kon3155 + 3 + 2 + 2 鼓励原创!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-9-29 18:58:46 | 显示全部楼层
本帖最后由 winxos 于 2009-9-29 19:01 编辑

//一份简易的GMP测试代码
//梅森素数的鲁卡斯测试以及概率测试
#include <iostream>
#include <gmp>
#include <PRIMES.h> //包含了我自己定义的素数相关类,本程序调用了其产生小素数
#include <ctime>
using namespace std;
#pragma comment(lib,"gmp.lib"); //另外一种引用库的方法
int IsMersenne(int ExpP)
{
        if (ExpP == 2) return 1;
        mpz_t c, b;
        mpz_init(c);
        mpz_init(b);
        mpz_ui_pow_ui(c, 2, ExpP);
        mpz_sub_ui(c, c, 1);                        //M(p) = 2^p-1
        mpz_set_ui(b, 4);
        for (int j = 0;j < ExpP-2;j++)
        {
                mpz_mul(b, b, b);
                mpz_sub_ui(b, b, 2);
                mpz_mod(b, b, c);
        }
        mpz_clear(c);
        if (mpz_cmp_ui(b, 0) == 0)
        {
                mpz_clear(b);
                return 1;
        }
        mpz_clear(b);
        return 0;
}
int IsMersenne2(int ExpP)
{
        if (ExpP == 2) return 1;
        mpz_t c;
        mpz_init(c);
        mpz_ui_pow_ui(c, 2, ExpP);
        mpz_sub_ui(c, c, 1);
        if (mpz_probab_prime_p(c, 5))
        {
                return 1;
        }
        return 0;
}
int main()
{
        time_t a,b;
        PRIMES P;
        int i, ct = 0;
        a=time(0);
        for (i = 900;i < 1100;i++)
        {
                int ExpP = P.PrimeAt(i);
                SetTitle(ExpP);
                if (IsMersenne(ExpP))
                {
                        cout<<++ct<<"\t"<<ExpP<<endl;
                }
        }
        b=time(0);
        cout<<difftime(b,a)<<""<<endl;
        return 0;
}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-10-1 09:49:32 | 显示全部楼层
报告,纳米盘上下载后不能解压。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-10-1 17:33:10 | 显示全部楼层
恩,是纳米盘的问题。纳米盘的http下载下下来的东西不是原件。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-10-1 19:46:13 | 显示全部楼层
3# rogoo96
不知道你这里是什么问题,我刚测试了,我这边是可以下载的,选择的进入HTTP下载
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-10-1 22:49:48 | 显示全部楼层
我再试试
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-10-1 22:53:00 | 显示全部楼层
现在可以了。
直接用这个地址(纳米盘跳到的):http://cid-6f0a3f68954c2091.skyd ... -29/easy%5E_gmp.rar
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-10-1 22:54:44 | 显示全部楼层
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-3 21:24 , Processed in 0.044448 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表