素数,现在给出n,要你求是否为素数,是输出Yes,否则输出No

Description
对于大于1的自然数,如果n为素数,那么所有大于1且不大于n的平方根的自然数都不能整除n,反之亦然。所以我们可以通过测试来确定n是否为素数。现在给出n,要你求是否为素数,是输出Yes,否则输出No

每行一个正整数n,n<=2^32-1,如果n为0,则输入结束。判断n是否为素数

每行输出一个用例的结果,如果是输出"Yes",否则输出“No”

Sample Input
2
3
4
5
6
0

Sample Output
Yes
Yes
No
Yes
No

#include<stdio.h>
#include<math.h>
int main()
{
    int i,n;
    int a = 0;
    while(scanf("%d",&n));
    {
        if(n==0)
        {
            return 0;
        }
        else
        {
         for(i=1;i<=sqrt(n);i++)
         {
             if(n%i==0)
             {
                a+=1;
             }
         }
         if(a==1)
         {
          printf("Yes\n"); 
         }
         else
         {
          printf("No\n");
         }
        }
    }    
    return 0;
}

我的是这样,哪里不对?

修改如下,问题见注释,共参考:

#include<stdio.h>
#include<math.h>
int main()
{
    int i,n;
    int a = 0;
    while(scanf("%d",&n)==1)// ';' 修改,这里多了分号
    {
        if(n==0)//n=0 时,退出
        {
            break;
            //return 0;
        }
        else
        {
          a=0;
          for(i=2;i<=sqrt(n);i++) //for(i=1;i<=sqrt(n);i++)
          {
             if(n%i==0)
             {
                a=1;//a+=1;
                break;
             }
          }
          if(a==1 || n==1)
          {
             printf("No\n");
          }
          else
          {
             printf("Yes\n");
          }
        }
    }
    
    return 0;
}

请把for里面的i-初始值设置为2
因为0 1 不是素数

把24行和28行两句话互换位置,在15行前面插入一句:a=0;