素数判定——哈工大
程序员文章站
2023-12-21 14:06:46
...
题目描述
知识点
素数判定
结果
实现
码前思考
- 这是属于判断一个数是否为素数的题目,使用时间复杂度位的模板。
代码实现
#include "bits/stdc++.h"
using namespace std;
bool isPrime(int num){
if(num <= 1){
return false;
}else{
int sqr = (int) sqrt(1.0*num);
for(int i=2;i<=sqr;i++){
if(num%i == 0){
return false;
}
}
return true;
}
}
int main(){
int num;
while(~(scanf("%d",&num))){
if(isPrime(num)){
printf("yes\n");
}else{
printf("no\n");
}
}
return 0;
}
码后反思
- 为了保险起见,我们的
sqr = (int) sqrt(1.0*num) + 1
是比较好的,《王道》上面说这样是为了防止double
值带来的精度的损失,所以宁愿多枚举一个数也不能少枚举一个数。 - 加油????