c++如何随机生成素数的函数
时间: 2023-07-15 13:15:54 浏览: 226
生成素数的一种简单方法是使用试除法(trial division)。该方法需要对每个候选素数进行一次测试,以确定它是否为素数。
以下是一个使用试除法生成随机素数的C++函数:
```c++
#include <cmath>
#include <cstdlib>
#include <ctime>
bool is_prime(int n) {
if (n < 2) {
return false;
}
int limit = sqrt(n);
for (int i = 2; i <= limit; ++i) {
if (n % i == 0) {
return false;
}
}
return true;
}
int generate_prime() {
// 设置随机数种子
srand(time(nullptr));
int n;
do {
// 生成一个范围在 100 到 999 之间的随机整数
n = rand() % 900 + 100;
} while (!is_prime(n));
return n;
}
```
该函数首先使用 `srand()` 函数设置随机数种子。然后,它生成一个范围在 100 到 999 之间的随机整数,并使用 `is_prime()` 函数测试该整数是否为素数。如果不是素数,则生成另一个随机整数,直到找到一个素数。
`is_prime()` 函数实现了试除法。它首先检查输入值是否小于 2,因为 2 是最小的素数。然后,它计算输入值的平方根并将其存储在变量 `limit` 中。接下来,它使用一个循环来测试输入值是否可以被 2 到 `limit` 之间的任何整数整除。如果可以,该函数返回 `false`,表示输入值不是素数。否则,它返回 `true`,表示输入值是素数。
阅读全文