题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
素数就是不能再进行等分的整数。比如:7,11。而 9 不是素数,因为它可以平分为 3 等份。一般认为最小的素数是2,接着是 3,5,…
请问,第 100002(十万零二)个素数是多少?
请注意:“2” 是第一素数,“3” 是第二个素数,依此类推。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路:素数是只能被1和自身整除的数,只需要判断该数能不能被2至自身-1的数整除就行了,但由于要求的是第100002(十万零二)个素数,直接暴力有点费时间,这里有一个技巧,只要判断其不能被2至自身的开二次方整除就行了。
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<math.h>
using namespace std;
int main() {
int count = 1;
int num;
for (int i = 3; ; i++)
{
int flag = 0;
if (count==100002)
{
num = i - 1;
break;
}
for (int j = 2; j <= sqrt(i); j++)
{
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag!=1)
{
count++;
}
}
cout << num;
return 0;
}