/*
* 著名的哥德巴赫猜想是说:任一大于2的偶数,都可表示成两个质数之和(质数,又称
* 素数,指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数)。
* 现在给定一个大于等于4的偶数,请输出它能表示成多少种两个质数的和。
* 输入:偶数n (4<=n<=32766)。 输出:请输出它能表示成多少种两个质数的和。
* 例如10=3+7=5+5,所以输入10的话答案是2。
**/
#include <stdio.h>
#include <stdlib.h>
int func(int num)
{
int before = num - 2;
int i = 2;
int j = 2;
int result = 0;
// 先看2+before是不是一个质数组合
for(i = 2; i <= before/2; i++)
{
if(before % i == 0)
break;
}
if(i == before/2+1)
result++;
// 再从3开始每次加2,偶数就不用判断了
for(i = 3; i <= num/2; i += 2)
{
// i是否是质数
for(j = 2; j <= i/2; j++)
if(i % j == 0)
break;
if(j > i/2)
{
// num-i是否是质数
for(j = 2; j <= (num-i)/2; j++)
if((num-i) % j == 0)
break;
if(j > (num-i)/2)
result++;
}
}
return result;
}
int main()
{
int num;
scanf("%d", &num);
int result = func(num);
printf("%d\n",result);
system("pause");
return 0;
}
哥德巴赫猜想--多少种两个质数的和
最新推荐文章于 2025-03-02 16:21:52 发布