/*
* =====================================================================================
*
* Filename: hdu2098.c
* Version: 1.0
* Created: 2013年11月18日 21时35分50秒
* Revision: none
* Compiler: gcc
* Author: Wenxian Ni (Hello World~), niwenxianq@qq.com
* Organization: AMS/ICT
* Description:
*分拆素数和
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17313 Accepted Submission(s): 7554
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
*
* =====================================================================================
*/
#include <stdio.h>
int prime(int x)
{
int i;
if(x%2==0&&x!=2||x<2)
return 0;
for(i=3; i*i<=x; i+=2)
//这里就比i<=sqrt(n)要好
if(x%i == 0)
return 0;
return 1;
}
int main()
{
int n;
int sum;
int i;
while(~scanf("%d",&n)&&n!=0)
{
sum = 0;
for(i=2;i<n/2;i++)
{
if(prime(i)&&prime(n-i))
sum++;
}
printf("%d\n",sum);
}
return 0;
}
素数的求法有一系列进阶的方法
还有就是,题中要求的是不同的素数