B2085 第 n 小的质数 题解
题目传送门
由于 n--)。如果
代码如下:
#include<iostream>
using namespace std;
int n,now=1;//now表示现在的数。
bool check(int x){
for(int i=2;i*i<=x;i++){//枚举到x的平方根就可以了,降低时间复杂度。
if(x%i==0)return 0;//若除了1和x本身还有别的因数,则x不是质数,返回0。
}
return 1;//否则返回1。
}
int main(){
cin>>n;
while(n!=0){
now++;
if(check(now)){
n--;
}
}
cout<<now;
return 0;
}
时间复杂度为
Q&A
Q:为什么从
A:因为
Q:既然是从 now初始化为
A:因为进入循环之后,会先执行now++这条语句。到后面的判断时,now已经是