#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int main()
{
int n1;
cin>>n1;
long long int MAX,n;
while(n1--)
{
int* primes = new int[1000000000];
//vector<int> v[10000000];
//int primes[100000]={1};
cin>>n;
cin>>MAX;
int i,j;
for(i=2;i<=MAX;i++) primes[i] = 1;
for(i=2;i<=(int)sqrt(MAX);i++)
{
// cout<<"primes[i]\t"<<i<<" "<<primes[i]<<endl;
if (primes[i])
{
for(j=i;j*i<=MAX;j++)
{
primes[i*j] = 0;
// cout<<"primes[i*j]\t"<<i*j<<" "<<primes[i*j]<<endl;;
}
}
}
primes[0]=0;
primes[1]=0;
for(int i=n;i<=MAX;i++)
{
if(primes[i])
cout<<i<<" "<<endl;
}
delete[] primes;
}
cout<<endl;
}
這是程序素數的範圍,即把兩個數字我使用erthenses的篩算法我的問題了較大的輸入和更多的測試用例之間發現的素數是表示SIGABRT有些時候SIGSEGV在網上裁判中我無法弄清楚如何做到這一點,任何幫助表示讚賞謝謝SIGABRT和SIGSEGV錯誤