附加的是查找2个数字之间的所有素数的代码。 t
是测试用例的数量,n
,m
分别是上限和下限。我跑这个程序,它不断给我sigsegv错误。查找两个数字之间的素数
#include <iostream>
using namespace std;
int Prime1(int n,int m)
{
int i,j;
//cout<<"Enter :"<<endl;
//cin>>n;
int x[n];
for(i=0;i<=n;i++)
{
x[i]=1;
}
for(i=4;i<=n;i+=2)
{
x[i]=0;
}
for(i=3;i<=n;i+=2)
{
if(x[i])
{
for(j=2*i;j<=n;j+=i)
{
x[j]=0;
}
}
}
if(m==1)
{
m=m+1;}
for(i=m;i<=n;i++)
{
if(x[i])
{
cout<<i<<endl;;
}
}
}
int main()
{
int x,y,t;
cin>>t;
while(t!=0)
{
cin>>x>>y;
cout<<endl;
if(x>y)
{
Prime1(x,y);
}
else
{
Prime1(y,x);
}
t--;
}
system("pause");
}
你应该看看埃拉托色尼的筛子:http://stackoverflow.com/a/24185190/205521的 – 2014-06-12 13:15:50
可能重复[如何找到0之间的素数 - 100?( http://stackoverflow.com/questions/11966520/how-to-find-prime-numbers-between-0-100) – 2014-06-12 13:20:11