40 分拆素数和
作者: xxx时间限制: 1S章节: 函数
问题描述 :
把一个偶数拆成两个不同素数的和,有几种拆法呢?
说明:
比如10,可以拆成3+7和5+5以及7+3,
但是3+7与7+3相同,只算一种,5+5由于两个素数相同,不计算在内。
因此,10的拆法只有一种。
输入说明 :
首先输入一个T(不超过500),然后输入T个正的偶数,其值不会超过10000。
输出说明 :
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
输入范例 :
4
4
6
8
10
输出范例 :
0
0
1
1
#include<stdio.h>
#include<math.h>
int geshu(int a){
int i,j,flag,m[10000],p=0,gs=0;
for(i=2;i<=a;i++){
flag=0;
for(j=2;j<=sqrt(i);j++)
if(i%j==0) {flag=1;break;}
if(flag==0) m[p++]=i;
}
for(i=0;i<p;i++){
for(j=i+1;j<p;j++)
if(m[i]+m[j]==a) gs++;
}
return gs;
}
int main(){
int T,i,m,n;
scanf("%d",&T);
for(i=0;i<T;i++){
scanf("%d",&m);
printf("%d\n",geshu(m));
}
return 0;
}