信息学奥赛C++语言: 第n小的质数

【题目描述】
输入一个正整数n,求第n小的质数。

【输入】
一个不超过10000的正整数n。

【输出】
第n小的质数。

【输入样例】
10

【输出样例】
29

代码

#include<iostream>
using namespace std;
int n,s;
int p[10001];
int a(int t)
{
    while(1)
    {
        bool k=0;
        for(int i=1;i<=s;i++) 
         if(t%p[i]==0) 
         {
             k=1;
			 break;
         }
        if(k) 
        {
            t++;
			continue;
        }
        return t;
    }
}
int main()
{
    cin>>n;
    p[1]=2;
	s++;
    for(int i=2;i<=n;i++)
    {
        int t=p[s]+1;
        int h=a(t);
        p[++s]=h;
    }
    cout<<p[n];
}
#include<cstdio>
#include<cmath>
using namespace std;
bool zhi(int x)
{
	for(int i=2;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			return false;
		}
	}
	return true;
}
int main()
{
	int n,s=0,i=1;
	scanf("%d",&n);
	while(s<n)
	{
		i++;
		if(zhi(i))
		{
			s++;
		}
	}
	printf("%d",i);
	return 0;
}

版权声明:本文为zsbailong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。