资源简介
随机产生大素数的C++程序,以时间作为随机数种子,生成大素数
代码片段和文件信息
#include
#include
#include
#include
bool witness(int along n)
{
//得到n-1的二进制表示
int div=(int) n;
int b[128];
int k=0;
int i;
while(div!=0)
{
b[k]=div%2;
div=div/2;
k++;
}
//计算
int x;
int d=1;
for(i=k-1;i>=0;i--)
{
x=d;
d=(d*d)%n;
if(d==1&&x!=1&&x!=n-1)
return true;
if(b[i]==1)
d=(d*a)%n;
}
if(d!=1)
return true;
else
return false;
}
int main()
{
long digit;
int a;
int i=0;
int j;
srand( (unsigned)time( NULL ) ); //以时间为获得产生随机数的种子
while(1)
{
digit=rand();
while(digit%2==0)
digit=rand(); //随机产生一个奇数
cout<<“the cow prime is “< /* i=0;
while(i {
//a为小于digit的随机数
a=(int)(digit/(float)RAND_MAX * rand());
cout< //素数测试(Miller_Rabin测试法),返回true表示不是素数
if(witness(adigit)) break;
i++;
}
*/ for(i=2;i<=sqrt(digit);i++)
{
if(digit%i==0) break;
}
cout<<“i=“<
if(i+1>(int)sqrt(digit))
{
cout<<“digit “< break;
}
}
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1198 2003-12-04 20:49 prime.cpp
----------- --------- ---------- ----- ----
1198 1
- 上一篇:Lua源码和Lua在C++的使用
- 下一篇:C++版本的FFT傅立叶变换程序源代码
评论
共有 条评论