7-46 判断一个整数是否为素数 (15 分)
本题要求编写程序,判断一个给定的整数是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
输入格式:
输入在一行中给出一个需要判断的整数 M(−2
31
≤M≤2
31
−1)。
输出格式:
如果M是素数,则在一行中输出Yes,否则输出No。如果输入了非正整数,也要输出No。
输入样例1:
11
结尾无空行
输出样例1:
Yes
结尾无空行
输入样例2:
9
结尾无空行
输出样例2:
No
结尾无空行
输入样例3:
-2
结尾无空行
输出样例3:
No
结尾无空行
#include <stdio.h>
#include <math.h>
int main(){
int M,i;
scanf("%d",&M);
if(M==1 || M<0){
printf("No");
}else{
if(M%2==0){ //先判断偶数缩短运行时间
printf("No");
}else if(M==2){
printf("Yes");
}else{
for(i=2;i<=sqrt(M);i++){
if(M%i==0){
printf("No");
}else{
printf("Yes");
}
}
}
}
return 0;
}
结果:部分正确