哥德巴赫曾猜测

德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对

Input

输入任意的>6的正偶数(<32767)

Output

试求给出的偶数可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)

Sample Input

1234

Sample Output

25
#include<stdio.h>
#include<math.h> 
int isSS(int x)
{
	int i,flag=1; //是素数 
	for(i=2;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			flag=0;
			break;
		} 
	}
	if(flag==1)
	return 1;
	else
	return 0;
} 
int main()
{
	int n;
	scanf("%d",&n);
	int i,j,sum=0; 
//	for(i=2;i<=n/2;i++)//只用判断到n的一半是否为素数即可,因为剩下的素数对只是前后位置不同 
//	{
//		if(isSS(i)==1)//i为素数
//		{
//		   //判断n-i是否为素数
//		   if(isSS(n-i)==1)
//		   sum++;
//		 }
//	} 
		for(i=3;i<=n/2;i+=2)//对上面的优化:偶数除了2是素数,其他都不是素数,且若一个数的因子为2,则这个数(已知这个数为偶数且大于6)的另一个因子一定为大于2的偶数, 
	{
		if(isSS(i)==1)//i为素数
		{
		   //判断n-i是否为素数
		   if(isSS(n-i)==1)
		   sum++;
		 }
	}
	printf("%d",sum); 
	return 0;
}

 


版权声明:本文为qq_42804678原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。