求第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++) //循环到sqrt即可 { if(i%j==0) { break; } } if(j>sqrt(i)) //因为for循环是先执行j++再判断条件 { count++; } if(count==n) { break; } } printf("%d",i); }