Logic is correct but it is giving Runtime Error(SIGFPE) on submission. Please help !!!
#include<iostream>
#include<vector>
#define ll long long
using namespace std;
vector<int> v;
void sieve()
{
int prime[31625];
for(int i=0;i<=31624;i++)
prime[i]=1;
prime[0]=0;
prime[1]=0;
for(int i=2;1LL*i*i<=31624;i++)
{
if(prime[i])
{
for(int j=i*2;j<=31624;j+=i)
prime[j]=0;
}
}
v.clear();
for(int i=0;i<=31624;i++)
{
if(prime[i])
v.push_back(i);
}
}
int main()
{
sieve();
int t;
scanf("%d",&t);
ll m,n;
while(t--)
{
scanf("%lld%lld",&m,&n);
if(m==1)m=2;
int siz=n-m+1;
int b[siz];
for(int i=0;i<siz;i++)
b[i]=1;
for(int i=0;1LL*v[i]*v[i]<=n;i++)
{
ll x=v[i];
ll s=(m/x)*x;
if(s<m)s+=x;
for(ll j=s;j<=n;j+=x)
{
b[j-m]=0;
}
if(s==x)
{
b[s-m]=1;
}
}
for(int i=0;i<siz;i++)
{
if(b[i])
{
printf("%lld\n",i+m);
}
}
printf("\n");
}
return 0;
}