Я пишу код для печати простых чисел между двумя числами, но мой код выдает неправильный вывод и останавливается после его выдачи
http://www.spoj.com/problems/PRIME1/
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int t,j,i=0;
cin>>t;
int m,n;
int primes[i];
while(t--) //t is the number of test-cases
{
cin>>m >>n; //m and n are the numbers between which prime numbers have to be calculated
for(i=0;i<=n;i++) //Using Sieve algorithm
primes[i]=1;
primes[0]=0;
primes[1]=0;
for(i=2;i<=sqrt(n);i++)
{
if(primes[i]==1)
{
for(j=2;i*j<=n;j++)
primes[i*j]=0;
}
}
for(i=2;i<=n;i++)
{
if(i>=m&&primes[i]==1)//Printing numbers which are greater than m
cout<<i<<"\n";
}
cout<<"\n";
}
int primes[i];
не является законным C ++. И с тех пор i == 0
это даже не работает C ++.
Очевидно, вам нужно выделять массив достаточно большой.
int *primes;
while(t--) //t is the number of test-cases
{
cin>>m >>n; //m and n are the numbers between which prime numbers have to be calculated
primes = new int[n+1]; // allocate a big enough array
...
delete[] primes;
}