[code]/**************************************************************
Problem: 1040
User: hrdjmax2
Language: C++
Result: Accepted
Time:130 ms
Memory:1920 kb素数筛选法不可用,x*i会超过int的表达范围直接求素数存放到数组中即可,for(i=3;i<110000;i++),在这个范围内可求得k<=10000个素数
****************************************************************/
#include <iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int susum[100001];//存放素数
int su=0;
void init()//素数筛选法
{
int i,j;
susum[su++] = 2;
for(i=3;i<110000;i++)
{
bool p = true;
for(j = 2; j<sqrt(i)+1; j++)
{
if(i%j == 0)
{
p = false;
}
}
if(p) susum[su++] = i;
}
}
int main()
{
init();//素数筛选法!
int n;
while(cin>>n)
{
cout<<susum[n-1]<<endl;
}
}[/code]九度题目1040:Prime Number 求第K个素数 2008年上海交通大学计算机研究生机试真题
最新推荐文章于 2021-12-24 11:05:23 发布
本文介绍了使用C++语言通过素数筛选法来寻找指定数量的素数,优化了内存使用并确保计算结果的准确性。
333

被折叠的 条评论
为什么被折叠?



