分拆素数和
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 33514 Accepted Submission(s): 14561
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30 26 0
Sample Output
3 2
Source
Recommend
#include<stdio.h>
#include<math.h>
int a[1300];//10000以内1229个素数
void sushu(){ //int n
int i,j,t=4;
a[0]=2,a[1]=3,a[2]=5,a[3]=7;
for(i=11;i<=10000;i++){
for(j=2;j<sqrt(i);j++){
if(i%j==0)break;
}
if(i%j) a[t]=i,t++;
}
}
int main()
{
int i,j,con,n;//全文去掉注释 运行时间93ms
sushu();//运行时间 124ms
while(scanf("%d",&n)&&n){
con=0;
//sushu(n);运行时间 639ms
for(i=0;a[i]<n;i++)
for(j=i+1;a[j]<n;j++){
if(a[i]+a[j]==n) con++;
}
printf("%d\n",con);
}
return 0;
}