求第n个素数
题目描述
输入一个正整数n,求第n小的质数。
输入 一个不超过10000的正整数n。
输出 第n小的质数。
输入 10
输出 29
错误示例:超时
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,n;
int flag=0;
int count=0;
scanf("%d",&n);
for(i=2;;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
}
if(i==j)
{
count++;
}
if(count==n)
{
break;
}
}
printf("%d",i);
}
改进:
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,n;
int flag=0;
int count=0;
scanf("%d",&n);
for(i=2;;i++)
{
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
break;
}
}
if(j>sqrt(i))
{
count++;
}
if(count==n)
{
break;
}
}
printf("%d",i);
}