东华大学 oj62——分拆素数和

问题描述 :
把一个偶数拆成两个不同素数的和,有几种拆法呢?

说明:
比如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>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

//判断素数 
int isPrime(int n) {
    
    
	int i;
	if(n==2){
    
    
		return 1;
	}
	for(i=2;i<n;i++) {
    
    
		if(n%i==0){
    
    
			return 0;
		}
	}
	return 1;
}

int main(int argc, char *argv[]) {
    
    
	int t,n,i,j,retCount;
	scanf("%d",&t);
	for(i=0;i<t;i++){
    
    
		scanf("%d",&n);
		retCount=0;
		for(j=2;j<(n/2);j++) {
    
    
			if(isPrime(j)==1){
    
    
				//直接求temp-j是不是素数
				if(isPrime(n-j)==1){
    
    
					if(j!=(n-j)){
    
    
//						printf("%d %d\n",j,n-j);
						++retCount;
					}	
				}
			}
		}
		printf("%d\n",retCount);
	}
		
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44169095/article/details/113724242