读书人

为什么答案不对关于判断素数,该怎么

发布时间: 2012-05-02 15:36:04 作者: rapoo

为什么答案不对,关于判断素数
1 #include<stdio.h>
2 int main(void)
3 {
4 unsigned int a;
5 int i;
6 FILE*fp=fopen("data.in","r");
7 if(fp==NULL){
8 printf("ERROR\n");
9 return 1;
10 }
11 if(fscanf(fp,"%u",&a)!=1){
12 printf("ERROR\n");
13 return 2;
14 }
15 if(a=1)
16 printf("Yes\n");
17 else
18 for(i=2;i<a;i++)
19 if(a%i==0)
20 break;
21 printf("No\n");
22 if(i>=a)
23 printf("Yes\n");
24 return 0;
25 }
为什么这段程序执行的结果不正确???求指教,谢谢!

[解决办法]
if(a=1)
//这句就错了吧,其他的我没仔细看
[解决办法]
15 if(a=1)
16 printf("Yes\n");
17 else
18 for(i=2;i<a;i++)
19 if(a%i==0)
20 break;
21 printf("No\n");
22 if(i>=a)
23 printf("Yes\n");


==>

15 if(a==1)
16 printf("Yes\n");
17 else
18 for(i=2;i<a;i++)
19 if(a%i==0)
20 break;
21
22 if(i>=a)
23 printf("Yes\n");
else
printf("No\n");

[解决办法]
楼主程序写的逻辑有问题,那个No是一直能打印出来的。而且不需要对1进行判断的。
[解决办法]

C/C++ code
#include<stdio.h>int main(void){    unsigned int a;    int i;    FILE*fp=fopen("data.in","r");    if(fp==NULL)    {        printf("ERROR\n");        return 1;    }    if(fscanf(fp,"%u",&a)!=1)    {        printf("ERROR\n");        return 2;       }    if(a==1)  //要==        printf("Yes\n");    else    {        for(i=2;i<a;i++)            if(a%i==0)                break;            if(i>=a)                printf("Yes\n");            else                printf("No\n");    }            return 0;}
[解决办法]
C/C++ code
#include<stdio.h>int main(void){      unsigned int a;    int i;    FILE*fp=fopen("data.in","r");    if(fp==NULL){        printf("ERROR\n");    return 1;    }    if(fscanf(stdin,"%u",&a)!=1){        printf("ERROR\n");        return 2;    }    if(a==1){           //a=1 -> a==1        printf("Yes\n");        return 0;   //这里增加一个return,不然会有两个yes    }    else    {        for(i=2;i<a;i++)            if(a%i==0){                printf("No\n");   //printf 放这里                break;            }    }    if(i>=a)        printf("Yes\n");    return 0;}
[解决办法]
21行, 总是执行,就是总是输出NO。

当为素数时,下面输出YES。

21 printf("No\n");
22 if(i>=a)
23 printf("Yes\n");

修改 if( i >= a )
printf("YES\n");
else
printf("NO\n");

读书人网 >C语言

热点推荐