首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-05-02 
为什么答案不对,关于判断素数1 #includestdio.h2 int main(void)3 {4unsigned int a5int i6FILE*fpfo

为什么答案不对,关于判断素数
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");

热点排行