Getting run error in prime visits

please find flaw in my code

#include <bits/stdc++.h>
using namespace std;

void prime_seive(int *p)
{
int i,j;

p[1]=p[0]=0;
p[2]=1;

for(i=3;i<=1000000;i=i+2)
p[i]=1;

for(i=3;i<=1000000;i=i+2)
{
    if(p[i]==1)
    {
        for(j=i*i;j<=1000000;j=j+i)
        p[j]=0;
    }
}

}

int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);

int i;

int p[1000005]={0};
int csum[1000005]={0};

prime_seive(p);


for(i=0;i<1000000;i++)
{
    csum[i]=csum[i-1]+p[i];
}


int q;
cin>>q;

while(q--)
{
    int a,b;
    cin>>a>>b;
    cout<<csum[b]-csum[a-1]<<endl;
}
return 0;

}

Now your code is running fine https://ide.codingblocks.com/s/249133