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
Sample Output
データも大きくないので、直接暴力を振るって、すべての因数を列挙して、それからすべて素数だと判断すればいいです.
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);
}
}