C++ 查找第10001个素数的代码未运行
我正在使用以下代码查找第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) {
我使用的是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++ )