40 分拆素数和

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;
}
发布了22 篇原创文章 · 获赞 3 · 访问量 6747

猜你喜欢

转载自blog.csdn.net/weixin_39910081/article/details/104514480
40