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) {
    // 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 变量 flag0 。我们用这个变量来判断输入的数是否可以表示为两个质数之和。

然后我们从 i = 2i = n/2 迭代一个循环。在每次迭代中,我们检查是否 i 是不是质数。

如果 i 是质数,我们检查 n - i 是质数还是不质数。

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

因此,我们将结果打印在屏幕上并将 flag 更改为 1 。否则, flag 仍然 0

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

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