判断一个整数是否为素数

问题遇到的现象和发生背景

本题要求编写程序,判断一个给定的整数是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

输入格式:
输入在一行中给出一个需要判断的整数M。

输出格式:
如果M是素数,则在一行中输出Yes,否则输出No。如果输入了非正整数,也要输出No。

用代码块功能插入代码,请勿粘贴截图

#include
#include
int main()
{
int a,i,b;
scanf("%d", &a);
if (a <= 1)
{ printf("No");}
else if (a == 2){
printf("Yes");} else {
b=sqrt(a)+5;
for (i = 2; i <= b; i++) {
if (a % i == 0) { break;
}
}
if (i >= b){
printf("Yes\n");}
else {printf("N0\n");}
}
return 0;
}

运行结果及报错内容

答案错误

No 你写成 N0 了,是英文字母,不是数字。

b=sqrt(a) +5 把+5去掉,if(i>=b)改为if(i>b)
N0改为No

修改如下,供参考:

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