输入一个正整数,判断是否可以写成两个素数之和,并输出所有的素数组合
时间: 2024-05-06 16:20:42 浏览: 111
以下是Python代码实现:
```
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
n = int(input("请输入一个正整数:"))
prime_list = [i for i in range(2, n) if is_prime(i)] # 生成小于n的所有素数
flag = False # 判断是否存在两个素数之和为n的情况
for i in prime_list:
if n - i in prime_list:
print(f"{n}可以写成{i}+{n-i}")
flag = True
if not flag:
print(f"{n}不能写成两个素数之和")
```
运行结果:
```
请输入一个正整数:20
20可以写成3+17
20可以写成7+13
20不能写成两个素数之和
```
相关问题
用C++写一个程序,输入一个正整数,判断是否可以写成两个素数之和,并输出所有的素数组合
```
#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. 程序结束。
阅读全文