题解 | #Prime Number#

Prime Number

http://www.nowcoder.com/practice/c5f8688cea8a4a9a88edbd67d1358415

#include<iostream>
#include<math.h>
#include<vector>

using namespace std;

const int MAXN = 1e6;

bool isPrime[MAXN];    //辅助数组

vector<int> prime;   //定义向量,存放质数

void Initial(){
	for(int i = 0; i < MAXN; ++i){
		isPrime[i] = true;     //默认将区间内的所有数都初始化为质数
	}
	isPrime[0] = false;
	isPrime[1] = false;
	for(int i = 2; i < MAXN; ++i) {
		if(!isPrime[i]) {    //非质数直接跳过
			continue;
		}
		prime.push_back(i);    //质数入向量
		if(i > MAXN / i) {
			continue;
		}
		for(int j = i * i; j < MAXN; j += i) {    //质数的倍数是非质数
			isPrime[j] = false;
		}
	}		
}

int main() {
	int k;  
	while(scanf("%d",&k) != EOF){
		Initial();
		printf("%d\n",prime[k-1]);  //直接输出第k个质数即可,这里注意以下下标与位序的关系
	}
	return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务