附加的是查找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