该程序从用户那里获取一个正整数,并检查该数字是否可以表示为两个素数之和。
如果数字可以表示为两个质数之和,则输出显示质数的组合。
为了执行此任务,创建了一个用户定义的函数来检查素数。
两个质数之和的整数
#include <stdio.h> int checkPrime(int n); int main() { int n, i, flag = 0; printf("Enter a positive integer: "); scanf("%d", &n); for (i = 2; i <= n / 2; ++i) { // condition for i to be a prime number if (checkPrime(i) == 1) { // condition for n-i to be a prime number if (checkPrime(n-i) == 1) { printf("%d = %d + %d\n", n, i, n-i); flag = 1; } } } if (flag == 0) printf("%d cannot be expressed as the sum of two prime numbers.", n); return 0; } // function to check prime number int checkPrime(int n) { int i, isPrime = 1; // 0 and 1 are not prime numbers if (n == 0 || n == 1) { isPrime = 0; } else { for(i = 2; i <= n/2; ++i) { if(n % i == 0) { isPrime = 0; break; } } } return isPrime; }
输出
Enter a positive integer: 34 34 = 3 + 31 34 = 5 + 29 34 = 11 + 23 34 = 17 + 17
在这个程序中,我们使用
checkPrime()
函数来检查一个数是否是素数。
在
main()
中,我们从用户那里获取一个数字并将其存储在变量
n中。
我们还将
int
变量
flag 初始化为
0
。我们用这个变量来判断输入的数是否可以表示为两个素数之和。
然后我们迭代一个从
i = 2
到
i = n/2
的循环。在每次迭代中,我们检查
i 是否为素数。
如果
i 是素数,我们检查
n-i 是否是素数。
如果
n-i 也是素数,那么我们知道
n 可以表示为两个素数
i 和
n-i.
因此,我们在屏幕上打印结果并将
flag 的值更改为
1
。否则,
flag 仍然是
0
。
这个过程一直持续到循环结束。
如果
flag仍然是
0
,那么我们知道
n不能表示为两个素数之和,我们打印屏幕上的那条消息。