其他分享
首页 > 其他分享> > 东华大学 oj62——分拆素数和

东华大学 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;
}

标签:拆成,return,int,retCount,素数,东华大学,isPrime,oj62
来源: https://blog.csdn.net/qq_44169095/article/details/113724242