第N小的质数,样例通过了,代码被判错误,如何解决?(语言-c语言)

44:第n小的质数:编码问题:感觉我的代码与其他答案差不多,样例也通过了,可就是Wrong Answer,请问问题出在哪里?
44:第n小的质数

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

输入
一个不超过10000的正整数n。
输出
第n小的质数。
样例输入
10
样例输出
29
我的代码
#include
#include
int main()
{
int n,i=3,j=1,k,l;
scanf("%d",&n);
if(n==1){
printf("2");
}else{
int count=1;
while(i<10000){
l=0;
for(k=2;k<=sqrt(i);k++){
if(i%k==0){
l++;
break;
}
}
if(l==0){
count++;
if(n==count){
printf("%d",i);
}
}
i++;
}
}
return 0;
}

从2开始判断是否质数,同时计数,到指定的个数就可以了
一个不超过10000的正整数n。====题目说的是可以获得第9999个质数,不是质数的值小于10000啊
所以你不能限定i<10000的
修改如下:

int main()
{
    int n,i=3,j=1,k,l;
    scanf("%d",&n);
    if(n==1)
    {
        printf("2");
    }
    else
    {
        long long count=1;
        while(true)
        {
            l=0;
            for(k=2;k<=sqrt(i*1.0);k++)
            {
                if(i%k==0)
                {
                    l++;
                    break;
                }
            }
            if(l==0)
            {
                count++;
                if(n==count){

                    printf("%d",i);
                    break;
                }
            }
            i++;
        }
    }
    return 0;
}


第一个While的循环判断问题,用i<10000其实是求不出后面的质数的,限定了只能求出小于10000的质数,但是第1230小的质数就已经大于10000了,你试一下改成COUNT<10000

#include <stdio.h>
#include <math.h>
int main() {
int n,i=3,j=1,k,l;
scanf("%d",&n);
if(n==1){
    printf("2");
}
else{
    int count=1;
    while(count<10000){
        l=0;
        for(k=2;k<=sqrt(i);k++){
            if(i%k==0){
                l++;
                break;
            }
        }
        if(l==0){
            count++;
            if(n==count){
                printf("%d",i);
            }
        }
        i++;
    }
}

    return 0;
}

什么是第n小的质数呀,没看明白题


可以查看手册:c语言-exp() 中的内容