题目1047:素数判定
时间限制:1 秒
内存限制:32 兆
特殊判题:否
-
题目描述:
-
给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。
-
输入:
-
测试数据有多组,每组输入一个数n。
-
输出:
-
对于每组输入,若是素数则输出yes,否则输入no。
-
样例输入:
-
13
-
样例输出:
-
yes
#include <stdio.h>
#include <stdbool.h> //使用了布尔类型需添加该头文件
#include <math.h> //使用了求平方根函数sqrt需添加该头文件
bool judge(int x){ //对每个数依次测试大于1但不大于其平方根的数字能否整除它
if(x<=1) return false;
int bound=(int)sqrt(x)+1;//计算枚举上界,根号值取整后再加1是为防止double值带来的精度损失
for(int i=2;i<bound;i++){
if(x%i==0) return false;
}
return true;
}
int main(){
int n;
while(scanf("%d",&n) != EOF){
puts(judge(n)?"yes":"no");//依据函数返回值输出答案
}
return 0;
}
/**************************************************************
Problem: 1047
User: zpy
Language: C++
Result: Accepted
Time:0 ms
Memory:1032 kb
****************************************************************/