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<stdlib.h>
#include<math.h>
int isPrime(int num){
//1不是素数
if(num==1){
return 0;
}
if(num>1&&num<=3){
return 1;
}
for(int i=2;i<=sqrt(num);i++){
if(num%i==0){
return 0;
}
}
return 1;
}
int main(){
int m,*p,i,j,k,count;
scanf("%d",&m);
p=(int *)malloc(m*sizeof(int));
for(i=0;i<m;i++){
scanf("%d\n",&p[i]);
}
for(j=0;j<m;j++){
count = 0;
for(k=2;k<=p[j]/2;k++){
if(isPrime(k)==1&&isPrime(p[j]-k)==1&&(2*k)!=p[j]){
count++;
}
}
printf("%d\n",count);
}
return 0;
}