编辑代码

#include <stdio.h>
#define MAX 1000010

int main () {
    int f[MAX]={0};
    int count = 1;
    for(int i = 2 ; i < MAX; i++){
        if(f[i]==0){
           count++;
		   f[i]=count;
			// i的倍数必然不会为质数,不用计算
          for(int j=2*i; j<MAX; j+=i){
             f[j]= -1;
           }
       }
       else{
		   	f[i]=count;
	   }
    }
    int m,n;
   	while(scanf("%d%d",&m,&n)!=EOF){
        count = f[n] - f[m-1];
        printf("%d\n", count);
        count = 0;
    }
    
    return 0;
}