第n小,不是只判断到10000啊
可能是要得到第9999小的素数,显然这个素数值肯定大于10000的啊。所以你的代码自然不正确
这个循环不适合用for,更适合用while,输入的n,没找到一个素数,则n减去1,用while(n>0)即可,最后一次循环找到的素数就是结果
#include <stdio.h>
int main()
{
int n,m=1,i;
scanf("%d",&n);
while(n>0)
{
m++;
for(i=2;i<m;i++)
if(m%i==0)
break;
if(i==m)
n--;
}
printf("%d",m);
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n,i=2,f,cnt=0,res;
cin>>n;
while(cnt<n){
f=1;
for(int j=2;j*j<=i;j++){
if(i%j==0){
f=0;
break;
}
}
if(f==1){
cnt++;
res = i;
}
i++;
}
cout<<res;
return 0;
}
输入1试试看
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,i,j,s=0;
cin>>n;
for(i=2;;i++)
{
for(j=2;j<=sqrt(i)&&i%j!=0;j++);
if(j>sqrt(i))
{
s++;
if(s==n)
{
cout<<i<<endl;
break;
}
}
}
}