为什么答案不对,关于判断素数
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进行判断的。
[解决办法]
#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;}
[解决办法]
#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");