鱼C论坛

 找回密码
 立即注册
查看: 2911|回复: 6

[技术交流] 这是我第一个贴子在鱼C网中。呵呵,给大家分享个程序

[复制链接]
发表于 2011-9-12 15:41:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
/**written by Cracker007. 02/09/2010**/


#include <stdio.h>
#include <time.h>
#include <gmp.h>              
void NextA(mpz_t ai, mpz_t xi, mpz_t n)
{
    if(mpz_fdiv_ui(xi,3UL)==0UL)
    {
        mpz_mul_2exp(ai,ai,1UL);
        mpz_mod(ai,ai,n);
        
    }   
    else if(mpz_fdiv_ui(xi,3UL)==1UL)
    {
        mpz_add_ui(ai,ai,1UL);   
        mpz_mod(ai,ai,n);
    }
}
void NextB(mpz_t bi, mpz_t xi, mpz_t n)
{
    if(mpz_fdiv_ui(xi,3UL)==0UL)
    {
        mpz_mul_2exp(bi,bi,1UL);
        mpz_mod(bi,bi,n);
        
    }   
    else if(mpz_fdiv_ui(xi,3UL)==2UL)
    {
        mpz_add_ui(bi,bi,1UL);   
        mpz_mod(bi,bi,n);
    }
}
void NextX(mpz_t xi, mpz_t a, mpz_t b, mpz_t p, mpz_t tmp)
{
    if(mpz_fdiv_ui(xi,3UL)==1UL)
    {
        mpz_mul(tmp,a,xi);
        mpz_mod(xi,tmp,p);
    }   
    else if(mpz_fdiv_ui(xi,3UL)==2UL)
    {
        mpz_mul(tmp,b,xi);
        mpz_mod(xi,tmp,p);
    }
    else
    {
        mpz_powm_ui(xi,xi,2UL,p);      
    }
}
int main()
{
    clock_t start,finish;
    double duration;
    mpz_t p,n,a,b,tmp,t1,t2,t3;
    mpz_t ai,bi,xi,a2i,b2i,x2i;
    gmp_randstate_t st;
    gmp_randinit_mt(st);
    start=clock();
    printf("calculating..\n");
    mpz_inits(p,n,a,b,tmp,ai,bi,xi,a2i,b2i,x2i,t1,t2,t3,0);
    mpz_set_str(p,"1988889263787723397",0);
    mpz_sub_ui(n,p,1UL);
    mpz_set_str(a,"5",0);
    mpz_set_str(b,"443682463790746787",0);
    gmp_randseed_ui(st,srand((unsigned int)time(0)));
    do
    {   
        mpz_urandomm(ai,st,n);
        mpz_urandomm(bi,st,n);
        mpz_powm(t1,a,ai,p);
        mpz_powm(t2,b,bi,p);
        mpz_mul(t3,t1,t2);
        mpz_mod(xi,t3,p);
        NextA(ai,xi,n);
        NextB(bi,xi,n);
        NextX(xi,a,b,p,tmp);
        mpz_set(a2i,ai);
        mpz_set(b2i,bi);
        mpz_set(x2i,xi);
        NextA(a2i,x2i,n);
        NextB(b2i,x2i,n);
        NextX(x2i,a,b,p,tmp);
        while(mpz_cmp(xi,x2i)!=0)
        {
            NextA(ai,xi,n);
            NextB(bi,xi,n);
            NextX(xi,a,b,p,tmp);
            NextA(a2i,x2i,n);
            NextB(b2i,x2i,n);
            NextX(x2i,a,b,p,tmp);
            NextA(a2i,x2i,n);
            NextB(b2i,x2i,n);
            NextX(x2i,a,b,p,tmp);
        }   
        mpz_sub(bi,bi,b2i);
    }while(mpz_sgn(bi)==0);   
    mpz_sub(a2i,a2i,ai);  
    printf("a2i-ai=");
    mpz_out_str(0,10,a2i);
    printf("\nbi-b2i=");
    mpz_out_str(0,10,bi);
    printf("\n");
    mpz_clears(p,n,a,b,tmp,ai,bi,xi,a2i,b2i,x2i,t1,t2,t3);
    finish=clock();
    duration=(double)(finish-start)/CLOCKS_PER_SEC;
    printf("total minutes spent: %f\n",duration/60);
    printf("now please use \"msolve(a2i-ai=(bi-b2i)*z,n)\" in maple to get z!\n");
system("pause");
return 0;
}   


大家看看吧,起码我好像看不懂,看懂得跟大伙说说吧。嘻嘻^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-14 01:03:51 | 显示全部楼层
fatal error C1083: Cannot open include file: 'gmp.h': No such file or directory:L
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-14 14:57:30 | 显示全部楼层
这是个什么程序呢!!我表示我也看不懂!!:D
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2016-4-14 10:42:02 | 显示全部楼层
不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-15 13:17:20 | 显示全部楼层
具体的用法说说。然后用代码方式发出来。不然好乱啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-16 15:05:47 | 显示全部楼层
篮球扣篮教学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-16 15:45:30 | 显示全部楼层
这坟挖的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-19 20:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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