用C++写一个程序,输入一个正整数,判断是否可以写成两个素数之和,并输出所有的素数组合
时间: 2024-05-08 13:17:16 浏览: 139
```
#include <stdio.h>
#include <math.h>
int is_prime(int n) { // 判断是否为素数
int i;
if (n < 2) return 0;
for (i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main() {
int n, i, j;
scanf("%d", &n); // 输入正整数n
printf("All prime number combinations:\n");
for (i = 2; i <= n / 2; i++) { // 枚举第一个素数
if (is_prime(i) && is_prime(n - i)) { // 如果第一个素数和第二个素数都是素数
printf("%d + %d = %d\n", i, n - i, n); // 输出素数组合
}
}
return 0;
}
```
说明:首先定义了一个 `is_prime` 函数用于判断一个数是否为素数。然后在主函数中,输入正整数 n,从 2 到 n/2 枚举第一个素数 i,如果 i 和 n-i 都是素数,则输出这个素数组合。
相关问题
用C++语言,输入一个正整数,判断是否可以写成两个素数之和,并输出所有的素数组合
```c
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
if (n < 4) {
printf("无法写成两个素数之和\n");
return 0;
}
printf("%d可以写成以下素数之和:\n", n);
for (int i = 2; i <= n / 2; i++) {
if (isPrime(i) && isPrime(n - i)) {
printf("%d + %d = %d\n", i, n - i, n);
}
}
return 0;
}
```
说明:
1. 定义了一个函数 `isPrime`,用于判断一个数是否为素数。
2. 输入一个正整数 n,如果 n 小于 4,则无法写成两个素数之和,直接输出提示信息。
3. 遍历 2 到 n/2 的所有数,如果 i 和 n-i 都是素数,则输出它们的和和 n。
4. 程序结束。
用C++写一个程序通过多次循环输入样例: 输入任意一个正整数: 9 输出样例: 能写成两个素数之和,两个素数是:2和7 输入样例: 输入任意一个正整数: 11 输出样例: 不能写成两个素数之和
```c
#include <stdio.h>
// 判断一个数是否为素数
int is_prime(int num) {
if (num < 2) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int num;
while (1) {
printf("输入任意一个正整数: ");
scanf("%d", &num);
if (num <= 0) {
break;
}
int flag = 0; // 是否找到两个素数之和等于num
for (int i = 2; i <= num / 2; i++) {
if (is_prime(i) && is_prime(num - i)) {
printf("能写成两个素数之和,两个素数是:%d和%d\n", i, num - i);
flag = 1;
break; // 找到一组就退出循环
}
}
if (!flag) { // 没有找到
printf("不能写成两个素数之和\n");
}
}
return 0;
}
```
阅读全文