这个代码哪里出现问题了,怎么答案是错误的

img

// 24写一个函数,判断某个数是否为素数,以及求1-1000之内的素数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include
#include
using namespace std;
bool isprime(int);

int main()
{ int count=1,n=0;
cin>> n;
for (int i = 2; i <= 10000; i++)
{
if (isprime(i)&&count==n){
cout << " " << i;
}
if(isprime(i)){
count++;
}

}

}
bool isprime(int k)
{
float m;
m = sqrt(float(k));
for(int i = 2; i<=m; i++ )
{
if (k % i == 0)
return false;
}
return true;
}

1.没有完整的质(素)数筛选
2.没有循环实现查找第n小的质(素)数

这两部分很关键,实现了基本上问题就不大了。

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!

修改如下,供参考:

#include<iostream>
using namespace std;
int main(){
    int n,s=0,i=1,j,flg;
    cin>>n;
    while(s < n){
        i++;
        for(j=2,flg=0;flg==0 && j*j<=i;j++)
            if(i%j == 0) flg = 1;
        if(!flg) s++;
    }
    cout<<i<<endl;
    return 0;
}

再改进下,供参考:

#include<iostream>
using namespace std;
int main(){
    int n,i=1,j,flg;
    cin>>n;
    while(n){
        i++;
        for(j=2,flg=1;flg==1 && j*j<=i;j++)
            if(i%j == 0) flg = 0;
        if(flg) n--;
    }
    cout<<i<<endl;
    return 0;
}