gpt4 book ai didi

c++ - srand 导致我的程序卡住

转载 作者:行者123 更新时间:2023-11-30 01:26:17 26 4
gpt4 key购买 nike

我已经用 C++ 实现了 RSA 算法,程序运行正常,但是 srand 调用使​​程序变慢了。我使用 srand 生成了两个质数和加密 key (e)。这是片段

...............................................
do
{
p = make_prime_number();
q = make_prime_number();
}while(p == q);

phi = (p - 1) * (q - 1);
n = p * q;

do
{
e = random_builder (20);

int *t = extended_gcd (e, phi);
d = t[0];
}while(gcd(e, phi) != 1 || d < 1 || d >= n );
...............................................

int random_builder(const int max)
{
srand(time(NULL));

return rand() % max + 1;
}

bool is_prime(const int num)
{
for(int i = 2; i <= num/2; i++)
if(num % i == 0)
return false;

return true;
}

int make_prime_number()
{
int num;

do
{
num = random_builder(20);
}while(not is_prime(num));

return num;
}

我们能否通过修改 srand 中的种子以某种方式加快该过程?

最佳答案

无需多次调用 srand()。在程序开始时调用它一次,然后就不用管它了。

使用特定种子值调用 srand() 后,rand() 生成相同的随机数序列。因此,由于您调用的是当前时间(以 为单位),您的 random_builder() 函数仅每 返回一次不同的值。

关于c++ - srand 导致我的程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10779188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com