C++编写程序求100以内的素数对。所谓素数对是指两个素数的差为2。例如:(17,19),(29,31)等就是素数对。要求设计自定义函数,判断两个自然数是否是素数对,并按如下格式输出:(10分) (3,5) (5,7) …… (71,73)
时间: 2024-05-10 10:15:40 浏览: 8
以下是C++代码实现:
```c++
#include<iostream>
using namespace std;
bool isPrime(int num) { // 判断素数
if(num < 2) return false; // 小于2的数不是素数
for(int i = 2; i * i <= num; i++) { // 从2遍历到num的平方根
if(num % i == 0) return false; // 如果有一个因子,就不是素数
}
return true; // 都没有因子,就是素数
}
void printPrimePair(int num1, int num2) { // 输出素数对
if(isPrime(num1) && isPrime(num2) && num2 - num1 == 2) { // 如果是素数对
cout << "(" << num1 << "," << num2 << ") "; // 输出
}
}
int main() {
for(int i = 1; i <= 98; i++) { // 遍历100以内的数
printPrimePair(i, i+2); // 判断并输出素数对
}
return 0;
}
```
运行结果如下:
```
(3,5) (5,7) (11,13) (17,19) (29,31) (41,43) (59,61) (71,73)
```
相关问题
用c++编写程序求100以内的素数
以下是用C语言编写的程序,用于找出100以内的所有素数:
#include <stdio.h>
int main() {
int i, j, is_prime;
for (i = 2; i <= 100; i++) {
is_prime = 1;
for (j = 2; j <= i / 2; j++) {
if (i % j == 0) {
is_prime = 0;
break;
}
}
if (is_prime) {
printf("%d ", i);
}
}
return 0;
}
该程序使用两个嵌套循环来检查每个数字是否为素数。外层循环从2开始,一直到100结束。内层循环从2开始,一直到当前数字的一半结束。如果当前数字可以被内层循环中的任何数字整除,则它不是素数。如果内层循环结束后仍然没有找到因子,则当前数字是素数,将其打印出来。
c++求100以内孪生素数对
孪生素数对是指相差为2的素数对,我们可以使用筛法来求解100以内的素数,然后逐个查找孪生素数对。
以下是C++代码实现:
```c++
#include <iostream>
using namespace std;
const int MAXN = 101; // 最大范围
bool is_prime[MAXN]; // 标记是否为素数
int main() {
// 初始化所有数为素数
for (int i = 2; i < MAXN; i++) {
is_prime[i] = true;
}
// 筛法求素数
for (int i = 2; i < MAXN; i++) {
if (is_prime[i]) {
// 将所有i的倍数标记为非素数
for (int j = i * 2; j < MAXN; j += i) {
is_prime[j] = false;
}
}
}
// 查找孪生素数对
for (int i = 2; i < MAXN - 2; i++) {
if (is_prime[i] && is_prime[i + 2]) {
cout << i << "和" << i + 2 << "是孪生素数对" << endl;
}
}
return 0;
}
```
输出结果为:
```
3和5是孪生素数对
5和7是孪生素数对
11和13是孪生素数对
17和19是孪生素数对
29和31是孪生素数对
41和43是孪生素数对
59和61是孪生素数对
71和73是孪生素数对
```
因此,100以内的孪生素数对为:
```
(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73)
```