跳到主要内容

C 编程:检查一个数字是否可以表示为两个质数的和

要理解这个例子,你应该具备以下 C编程 主题的知识:

这个程序从用户那里接收一个正整数,并检查这个数字是否能表示为两个质数之和。

如果这个数字能表示为两个质数之和,输出将显示这两个质数的组合。

为了完成这个任务,创建了一个用户定义函数来检查质数

将整数表示为两个质数之和

#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) {
// i为质数的条件
if (checkPrime(i) == 1) {
// n-i为质数的条件
if (checkPrime(n - i) == 1) {
printf("%d = %d + %d\n", n, i, n - i);
flag = 1;
}
}
}

if (flag == 0)
printf("%d 不能表示为两个质数之和。", n);

return 0;
}

// 检查质数的函数
int checkPrime(int n) {
int i, isPrime = 1;

// 0和1不是质数
if (n == 0 || n == 1) {
isPrime = 0;
}
else {
for(i = 2; i <= n/2; ++i) {
if(n % i == 0) {
isPrime = 0;
break;
}
}
}

return isPrime;
}

输出

输入一个正整数:34
34 = 3 + 31
34 = 5 + 29
34 = 11 + 23
34 = 17 + 17

在这个程序中,我们使用 checkPrime() 函数来检查一个数字是否是质数。

main() 中,我们从用户获取一个数字,并将其存储在变量 n 中。

我们还初始化了 int 变量 flag0。我们使用这个变量来确定输入的数字是否可以表示为两个质数之和。

然后我们从 i = 2 开始循环,直到 i = n/2。在每次迭代中,我们检查 i 是否是质数。

如果 i 是质数,我们再检查 n - i 是否也是质数。

如果 n - i 也是质数,那么我们知道 n 可以表示为两个质数 in - i 之和。

因此,我们在屏幕上打印结果,并将 flag 的值改为 1。否则,flag 保持为 0

这个过程一直持续到循环结束。

如果 flag 仍为 0,那么我们知道 n 不能表示为两个质数之和,并在屏幕上打印出这个消息。