CDUESTC 2016休暇試合1 C題

1511 ワード

C-分割素数と
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Description
偶数を2つの異なる素数の和に分解するには、いくつかの分解法がありますか?
Input
入力には、10000を超えず、500を超えない正の偶数が含まれています.0の場合、終了します.
Output
各偶数に対応して、異なる素数に分割された個数を出力し、各結果が1行を占める.
Sample Input

     
     
     
     
30
26
0

Sample Output

     
     
     
     
3
2

データも大きくないので、直接暴力を振るって、すべての因数を列挙して、それからすべて素数だと判断すればいいです.
#include <stdio.h>
int sushu(int a)
{
	int i,leap=0;
	for(i=2;i<=a/2;i++)
		if(a%i==0)
		{
			leap=1;break;
		}
	if(leap==0)
		return 1;
	else
		return 0;
}
int main()
{
	int n,m,i;
	while(scanf("%d",&n)!=EOF,n)
	{
		int num=0;
		for(i=2;i<n/2;i++)
		{
			m=n-i;
			if(sushu(i)&&sushu(m))
				num++;
		}
		printf("%d
",num); } }