C程序 检查一个数字是否可以表示为两个素数之和
在这里,我们将用C语言程序看看一个数字是否可以表示为两个质数之和。下面是这些例子。
输入: 7
输出: Yes
解释: 7可以表示为2和5的质数之和
输入: 11
输出: No
解释: 没有两个质数的总和是11。
方法: 我们的想法是,从2到N进行循环,检查i和N-i是否为质数。
下面是检查一个数字是否可以表示为两个质数之和的C语言程序。
// C program to check whether a
// number can be expressed as sum
// of two prime numbers
#include <stdio.h>
// Function to check prime number
int isPrime(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;
}
// Driver code
int main()
{
int n = 7, i, flag = 0;
for (i = 2; i <= n / 2; ++i)
{
// condition for i to be a
// prime number
if (isPrime(i) == 1)
{
// condition for n-i to
// be a prime number
if (isPrime(n - i) == 1)
{
printf("Yes\n");
return 0;
}
}
}
printf("No\n");
return 0;
}
输出
Yes
时间复杂度: O(N 2 )
辅助空间: O(1)