偶數拆成素數和.Problem Description把一個偶數拆成兩個不同素數的和,有幾種拆法呢?Input輸入包含一

題目:

偶數拆成素數和.
Problem Description
把一個偶數拆成兩個不同素數的和,有幾種拆法呢?
Input
輸入包含一些正的偶數,其值不會超過10000,個數不會超過500,若遇0,則結束.
Output
對應每個偶數,輸出其拆成不同素數的個數,每個結果占一行.
Sample Input
30
26
0
Sample Output
3
2
我寫的代碼輸出都是0..
#include
#include
int main()
{
int n,a,b,i,k1,k2,m=0;
while(scanf("%d",&n)!=EOF&&(n!=0))
{
k1=0;
k2=0;
for(a=2;a

解答:

#include<stdio.h>
#include<math.h>
int main()
{
\x09int n,a,b,i,k1,k2,m;
\x09while(scanf("%d",&n)!=EOF&&(n!=0))
\x09{
\x09\x09m=0;//對於每個n都需對m進行初始化爲0
\x09\x09for(a=2;a<(n/2);a++)
\x09\x09{
\x09\x09\x09k1=0;//對於每個a,b組合都要初始化k1,k2爲0
\x09\x09\x09k2=0;//
\x09\x09\x09b=n-a;
\x09\x09\x09for(i=2;i<=sqrt(a);i++)//循環條件改成i<=sqrt(a)
\x09\x09\x09{
\x09\x09\x09\x09if(a%i==0)
\x09\x09\x09\x09\x09k1=1;
\x09\x09\x09}
\x09\x09\x09for(i=2;i<=sqrt(b);i++)//循環條件改成i<=sqrt(b),必須改,否則比如b=25,你會把25判斷成指數
\x09\x09\x09{
\x09\x09\x09\x09if(b%i==0)
\x09\x09\x09\x09\x09k2=1;
\x09\x09\x09}
\x09\x09\x09if((k1==0) && (k2==0))
\x09\x09\x09\x09m++;
\x09\x09}
\x09\x09printf("%d\n",m);
\x09}
\x09return 0;
}

名師點評:

aaxpzhbr

添加新評論

暱稱
郵箱
網站