CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

谁能看明白求随机大素数的算法?

楼主wi_wi(奇奇)2002-05-30 09:17:39 在 C/C++ / C语言 提问

这是一个求随机大素数的算法,我看不明白,请大虾指教。  
  typedef   short   int   byteint[DATALENGTH];  
  typedef   short   int   mtype[MLENGTH];  
  mtype   Model[TESTNUM];    
  void   LoadInt(byteint   A,mtype   B)  
  {  
  int   i,j;  
  SetZero(A);/*将A置零*/  
  i=DATALENGTH-1;  
  j=MLENGTH-1;  
  while(j>=0)  
  A[i--]=B[j--];  
  }  
  int   Prime(byteint   Prm)  
  {  
      int   i,k,ok,cnt=0;  
      unsigned   char   flag[400];  
      byteint   A,B,D,buf1,buf2;  
      while(1){  
      int   pass=0,pass_2=0;  
      cnt++;  
      IntRandom(B,MLENGTH);   /*随机产生指定长度的奇数,结果放B,MELENGTH为长度*/      
      printf("\n           %3d.try:",cnt);  
      PrtInt(B);     /*显示B*/                          
      IntCpy(Prm,B);/*将B拷贝Prm中*/  
      Substract(B,ONEVALUE,buf1);/*大整数减,ONEVALUE为1*/  
      SetMode(buf1,TWOVALUE,buf2,B);/*大整数求余,TWOVALUE为2*/  
      TransBi(B,flag);/*将B转化为二进制存入flag*/  
      ok=1;  
      for(i=0;i<TESTNUM;i++)  
                              {  
              LoadInt(A,Model[i]);/*见开始定义*/  
              k=PowerMode(A,Prm,D,flag);/*A的flag次幂对Prm求余,结果放D*/  
              if(k!=1   &&   k!=2)  
  break;  
              if(k==1)  
                    printf("\n     pass   the   %dth   test-----1",pass++);          
              if(k=2)    
                                    {  
  pass_2=1;  
  printf("\n       pass   the   %dth   test----2",pass++);  
                    }  
                }  
        if(ok   &&   pass_2){                          
  printf("\n\n   prime   found   :");  
  PrtInt(Prm);  
  return   0;  
                      }  
  }  
  } 问题点数:20、回复次数:8Top

1 楼z_sky()回复于 2002-05-30 09:37:29 得分 0

有趣,回头看看Top

2 楼wuyi8808(空间/IV)回复于 2002-05-31 09:08:40 得分 0

gzTop

3 楼phoenixchain(走走看看)回复于 2002-05-31 10:14:21 得分 0

算法没有写全,BUF1和BUF2是什么参数MODEL在社么地方赋值的也没有说明  
  要想看懂太困难了  
  Top

4 楼wi_wi(奇奇)回复于 2002-06-01 11:08:21 得分 0

感谢各位关注  
  不过,有点不好意思,我把一个定理给发出来了,这是一个数学定理,好像还没经过证明,我刚刚找到。  
  是:a**((b-1)/2)%b,  
  其中a是随机选取的一个数,b是要检测的数,如果求余结果是1或者b-1则b很可能是素数。  
  当选择100个不同的a作以上测试且都成功,则b不是素数的几率只有2**(-100),所以可以判定b是素数。Top

5 楼sleepboy_2000(SleepBoy)回复于 2002-06-01 12:15:53 得分 20

同一楼上的公式,但这只是一个不太严格的分析公式,如果用在比较高要求的加密算法里可能会出问题.Top

6 楼lkcowboy(三黑)回复于 2002-06-01 12:28:54 得分 0

gzTop

7 楼wi_wi(奇奇)回复于 2002-06-02 18:39:40 得分 0

同意  
  结帐Top

相关问题

  • 500分求素数算法问题
  • 挑战各位高手,一个求素数的算法
  • 素数的算法——非筛法(大家批批~)
  • 随机算法的问题
  • 谁能给出一个最快最高效的求素数的算法?(高分求算法)
  • 判断是否为超大质(素)数(100位以上)问题的算法!!!
  • 求算法:任意高精度数n以内的所有素数
  • 求生成随机数的算法
  • 画随机块——算法研究
  • 求随机序列生成算法!

关键词

  • byteint
  • mlength
  • prm
  • mtype
  • cnt
  • buf
  • flag

得分解答快速导航

  • 帖主:wi_wi
  • sleepboy_2000

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo