就一直有数据不通过,我试过好多都过了呀

img

第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;
            }
        }
    }
 }