随机数产生问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:39:06
//==================================================================
// 产生一个强素数
//==================================================================
void strongprime(big p,int n,long seed1,long seed2)
{
int r,r1,r2;
srand(seed1); //产生一个随机数,即初始化
bigbits(2*n/3,pd); //生一个2*n/3 位(bit)的pd随机数
nxprime(pd,pd); //nxprime(pd,x)找到一个x大于pd的素数,返回值为BOOL
expb2(n-1,ph); //ph = 2^(n-1),即2的(n-1)次方
divide(ph,pd,ph); //ph = ph/pd
expb2(n-2,pl); //pl=2^(n-2)
divide(pl,pd,pl); //pl=pl/pd
subtract(ph,pl,ph); //ph = ph-pl
srand(seed2); //产生随机数
bigrand(ph,ph);
add(ph,pl,ph); //ph=ph+pl
r1=subdiv(pd,12,pl); //pl=pd/12
r2=subdiv(ph,12,pl); //pl=ph/12
r=0;
while ((r1*(r2+r))%12!=5)
r++;
incr(ph,r,ph); //ph=ph+r
do
{ //find p

//==================================================================
// 产生一个强素数
//==================================================================
//////////////////////////////////////////////////
#include<stdlib.h>
#include<dos.h> //前面要加这个!
////////////////////////////////////////////
void strongprime(big p,int n,long seed1,long seed2)
{
int r,r1,r2;
///////////////////////////////////////////////
randomize(); //这里加上这一句!
///////////////////////////////////////////////////
srand(seed1); //产生一个随机数,即初始化
bigbits(2*n/3,pd); //生一个2*n/3 位(bit)的pd随机数
nxprime(pd,pd); //nxprime(pd,x)找到一个x大于pd的素数,返回值为BOOL
expb2(n-1,ph); //ph = 2^(n-1),即2的(n-1)次方
divide(ph,pd,ph); //ph = ph/pd
expb2(n-2,pl); //pl=2^(n-2)
divide(pl,pd,pl); //pl=pl/pd
subtract(ph,pl,ph); //ph = ph-pl