素数个数,帮我找找错误

img


#include<stdio.h>
int num[1000002]={1,1,0};
int main(){
int i,j,sum;
int k,a,b,max,min;
for(i=2;i<=500000;i++){
if(num[i]==0){
for(j=i+i;j<=1000000;j+=i){
num[j]=1;
}
}
}

for(i=2,sum=0;i<=1000000;i++){
    if(num[i]==0){
        sum++;
        num[i]=sum;
    }
}
scanf("%d",&k);
while(k--){
    scanf("%d %d",&a,&b);
    max=a>b?a:b;
    min=a<b?a:b;
    if(a==b){
        if(a==0){
            printf("0\n");
        } else {
            printf("%d",num[a]-num[a-1]);
        } 
    } else {
        printf("%d",num[max]-num[min]+1);
    }    
}

}
哪错了

这段计数有问题呀,这个sum值怎么填入num[i]里


    for (i = 2, sum = 0; i <= 1000000; i++) {
        if (num[i] == 0) {
            sum++;
            num[i] = sum;
        }
    }