#include<stdio.h> #include<math.h> int sushu(int a){ if(a==1||a==0) return 0; for(int i=2;i<=sqrt(a);i++){ if(a%i==0) return 0; } return 1; } int main(){ int a,b,sum=0,x[1000001]; for(int i=0;i<1000001;i++){ //降低时间复杂度,空间换时间 if(sushu(i)==1) sum++; x[i]=sum; //区间0到i的富人数 } while(scanf("%d %d",&a,&b)!=EOF){ if(x[a]>x[a-1]) printf("%d\n",x[b]-x[a]+1); else printf("%d\n",x[b]-x[a]); } } |
Double click to view unformatted code.