素数判定 (九度教程第 50 题)
1.题目描述:
给定一个数 n,要求判断其是否为素数(0,1,负数都是非素数)。
输入:
测试数据有多组,每组输入一个数 n。
输出:
对于每组输入,若是素数则输出 yes,否则输入 no。
样例输入:
13
样例输出:
yes
来源:
2009 年哈尔滨工业大学计算机研究生机试真题
2.基本思路
遍历2->sqrt(n)+1之间的数,判断其是否为n的因子。
时间复杂度
O
(
n
1
2
)
O(n^{\frac{1}{2}})
O(n21)
3.代码实现
#include <iostream>
#include <math.h>
using namespace std;
bool isPrime(int n){
int bound = sqrt(n)+1;
for(int i=2;i<bound;i++){
if(n%i==0)return false;
}
return true;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
if(n<2)printf("no\n");
else
if(isPrime(n))printf("yes\n");
else printf("no\n");
}
return 0;
}