题目:
第10001个素数
列出前6个素数,它们分别是2、3、5、7、11和13。我们可以看出,第6个素数是13。第10,001个素数是多少?
加注释的是 素数筛优化前的算法
#include<iostream>
using namespace std;
const int MAX_RANGE=150000;
int prime[MAX_RANGE] = {0}, primeList[MAX_RANGE] = {0};
//prime数组中 0代表是素数 1代表不是素数
void getPrime2()
{
for (int i = 2 ; i < MAX_RANGE ; ++i)
{
if (!prime[i])
{
primeList[++primeList[0]] = i;
}
for (int j = 1 ; j <= primeList[0] ; ++j)
{
if (i * primeList[j] >= MAX_RANGE) break;//这里必须是大于等于MAX_RANGE
prime[i * primeList[j]] = 1;//将素数的倍数标记
if (i % primeList[j] == 0) break;
}
}
}
int main()
{
getPrime2();
cout<<("%d",primeList[10001]);
cout<<(" ");
//cout<<prime[101]; 用来判断101是否为素数 (0:是素数 1:不是素数)
}
//
//void getPrime() {
// for (int i = 2 ; i < MAX_RANGE ; ++i) {
// if (!prime[i]) {
// primeList[++primeList[0]] = i;
// for (int j = i * 2 ; j < MAX_RANGE ; j += i) {
// prime[j] = 1;
// }
// }
// }
//}