判断输入数是不是素数这个程序错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:53:02
#include <stdio.h>
#include <math.h>
main()
{
int a,b;
scanf("%d",b)
for(a=1;a<=sqrt(b);a++)
if(b%a!=0) printf("%d",b);
}

scanf("%d",b)
应该是
scanf("%d",&b);

后面
for(a=1;a<=sqrt(b);a++)
if(b%a!=0) printf("%d",b);
应该改成
for(a=1,flag=0;a<=sqrt(b);a++) /*开头要添上short flag;*/
if(b%a==0) flag=1,break;

if(flag==1) printf("Yes,%d",b); /*不是素数*/
else printf("No,%d",b); /*是素数*/
return 0; /*main()要有返回值0*/

一开始的算法就有问题
其实你把b=9代进去,明显就错了

#include <stdio.h>
#include <math.h>
main()
{
int a,b;
scanf("%d",b)
for(a=1;a<=sqrt(b);a++)
if(b%a)break;
printf("%d",b);
}