算法(加密相关类)--判别巨型整数是否是质数?

snowmansh 2005-04-01 09:21:31
大家知道在公钥加密系统中:
巨型整数的处理是很关键的。
在产生一个巨型整数后,还要判别
它是否是质数。

这类巨型整数通常其位长在1024-2048bit。
撇开巨型问题。

请指点判别质数的基本思路或者参考!
谢谢了!
...全文
264 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SammyLan 2005-08-19
  • 打赏
  • 举报
回复
大数加减乘除,乘方,阶乘这些就做过
判断一个数是否是质数倒是没有做过
lujun-cc 2005-08-05
  • 打赏
  • 举报
回复
http://student.zjzk.cn/course_ware/data_structure/web/jingcaiwenzhang/wenzhang14.htm

兄弟,这里有关于如何产生大素数并对之进行判定的算法描述,你可以参考!

另外,使用Java中定义的BigInteger类来实现这样的算法是非常方便的,你可以研究一下!
wzjall 2005-08-04
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>
void main()
{
int m,k,i,n=0,a=0,b=0;
double d=1.0;
for(m=1;m<10000;m=m+2)
{
d=m+0.0;
k=(int)sqrt(d);

for(i=2;i<=k;i++)
if(m%i==0)break;

if(i==k+1)
{if(n==0)
{a=m;n=1;
}
else b=m;
}

if((b-a)==2)
{printf("%2d and %2d\n",a,b);
a=b;
}
a=b;
}
}
jixingzhong 2005-08-02
  • 打赏
  • 举报
回复
同意楼上的
pcboyxhy 2005-04-01
  • 打赏
  • 举报
回复
Miller-Rabbin 测试:
不断选取基b(s次), 计算是否每次都有 b^(n-1) == 1 (mod n)

算法时间复杂度是O(s (logn)^3 n)

这是一个概率算法
存在误差
但是只要选取的次数构多
误差可以忽律

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧