二.编一函数判断n是否为质数,并且输出十对最小的孪生素数。函数形式为:bool is_prime(int n)(孪生素数是指两个相差为2的质数,例如3和 5,11和 13.)
时间: 2024-12-18 16:29:49 浏览: 6
首先,我们可以编写一个名为`is_prime`的函数来检查一个整数`n`是否为质数。这个函数的基本原理是通过循环检查从2到`n-1`的所有数字,看它们是否能整除`n`。如果找到这样的因子,那么`n`就不是质数;如果没有,就是质数。
接下来,为了找出十对最小的孪生素数,我们需要遍历较小的质数并检查它的下一个质数,直到找到满足条件的十对。这可以结合使用一个已知的质数列表(如埃拉托斯特尼筛法生成),然后在其中查找相邻的素数对。
以下是伪代码示例:
```cpp
#include <vector>
using namespace std;
// 判断是否为质数
bool is_prime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
// 找出孪生素数
void find_twin_primes(int limit, vector<pair<int, int>>& twin_primes) {
vector<bool> primes(limit + 1, true);
primes[0] = primes[1] = false;
for (int i = 2; i * i <= limit; i++) {
if (primes[i]) {
for (int j = i * i; j <= limit; j += i)
primes[j] = false;
}
}
// 遍历寻找孪生素数
for (int i = 3; i < limit - 1 && twin_primes.size() < 10; i++) {
if (primes[i] && primes[i + 2]) {
twin_primes.push_back({i, i + 2});
}
}
}
int main() {
int limit = 10000; // 可调整上限,这里仅限于举例
vector<pair<int, int>> twin_primes;
find_twin_primes(limit, twin_primes);
cout << "以下是十对最小的孪生素数:" << endl;
for (const auto& pair : twin_primes) {
cout << pair.first << " 和 " << pair.second << endl;
}
return 0;
}
```
阅读全文