C++ 查找第10001个素数的代码未运行

C++ 查找第10001个素数的代码未运行,c++,C++,我正在使用以下代码查找第10001个素数,但它没有运行。 我使用的是devc++,但当我运行这段代码时,会出现一个空白屏幕 这是我的代码: #include<iostream> #include<conio.h> using namespace std; int prime(int a) { int p=0; for(int j=2;j<=a/2,p<=0;j++) { if(a%j==0) {

我正在使用以下代码查找第10001个素数,但它没有运行。
我使用的是devc++,但当我运行这段代码时,会出现一个空白屏幕

这是我的代码:

#include<iostream>
#include<conio.h>
using namespace std;
int prime(int a)
{
    int p=0;
    for(int j=2;j<=a/2,p<=0;j++)
    {
        if(a%j==0)
        {
            p++;
        }
    }
    if(p==0)
    {
        return 1;
    }
    else
    return 0;
}

int main()    
{
    int i,c=0;
    for(i=2;c<=10001;i++)
    {
        if(prime(1))
        {
            c++;
        }
    }
    cout<<i;
    return 0;
}
#包括
#包括
使用名称空间std;
整数素数(整数a)
{
int p=0;

对于(int j=2;j第1点:
每次将此行更改为时,您都要传递
if(prime(1))
参数
1

if(prime(i))
第2点: 换行

for(int j=2;j<=a/2,p<=0;j++)

首先,我想你的意思是

if(prime(i)) 
而不是
if(prime(1))

第二,这段代码中有很多漏洞。首先,您可以验证如果数字a除以j,j的最大值为sqrt(a)(使用math.h library),那么使用更高的值时速度会更快。
另一件事,你说这是一个寻找第10001个素数的代码,而不是直到10001的素数,让我们看看每个问题

首先,您需要使用

if( prime(i) )
而不是

if( prime(1) )
我相信那是你的错别字

Second,因为在for循环之后,
i
是递增的,所以需要进行更改

cout << i;


对于(int j=2;j)我想你需要
if(prime(I))
而不是
if(prime(1))
同样,逗号不是“and”的意思。我不这么认为,@ArunA.S.
I
是测试的数字,
c
是找到的prime的计数器。不过使用while循环会让这一点更清楚。
if( prime(i) )
if( prime(1) )
cout << i;
cout << i-1;
for(int j = 2 ; j <= a/2 , p <= 0 ; j++)
for(int j = 2 ; j <= a/2 && p <= 0 ; j++ )
for( i = 2 ; c <= 10001 ; i++ )
for( i = 2 ; c < 10001 ; i++ )