新人菜鸡
2020-05-06 01:16
采纳率: 50%
浏览 89

问一下这串代码中time_t起到个什么作用啊,他是怎么实现取到很大的素数p和q的?

选择p,q,p,q都是素数,。由于P和q都是大素数,所以为了方便由程序自动生成。
//产生随机素数p和q
void prime_random(int *p,int *q)
{
int i,k;
time_t t;
p[0]=1;
q[0]=3;

// p[19]=1;
// q[18]=2;

p[MAX-1]=10;
q[MAX-1]=11;

do
{
t=time(NULL);
srand((unsigned long)t);
for(i=1;i<p[MAX-1]-1;i++)
{
k=rand()%10;
p[i]=k;
}
k=rand()%10;
while (k==0)
{
k=rand()%10;
}
p[p[MAX-1]-1]=k;
}while((is_prime_san(p))!=1);
printf("素数 p 为 : ");
for(i=0;i<p[MAX-1];i++)
{
printf("%d",p[p[MAX-1]-i-1]);
}
printf("\n\n");
do
{
t=time(NULL);
srand((unsigned long)t);
for(i=1;i<q[MAX-1];i++)
{
k=rand()%10;
q[i]=k;
}
}while((is_prime_san(q))!=1);
printf("素数 q 为 : ");
for(i=0;i<q[MAX-1];i++)
{
printf("%d",q[q[MAX-1]-i-1]);
}
printf("\n\n");
return;
}

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2020-05-06 10:04
    已采纳

    time_t这里纯粹用来初始化随机数种子,如果用固定的数字初始化,每次运行程序,结果一样。

    问题解决的话,请采纳

    打赏 评论
  • 穆暖阳 2020-05-06 10:03

    你这里是用时间作为种子生成了一个随机数

    打赏 评论

相关推荐 更多相似问题