/* * ===================================================================================== * * 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 ",sum); } return 0; }
素数的求法有一系列进阶的方法
还有就是,题中要求的是不同的素数