尼玛坑爹的题总超时,现在还是不会,先赋上别人AC的代码吧。
原博客地址:
http://blog.youkuaiyun.com/tankpt/article/details/8797343
#include<stdio.h>
#define N 100001
int num[N];
int mark[N];
int prim[N];
int pnum=0;
int main(){
int i,j;
int a,b,sum;
num[1]=0;
for(i=2;i<N;i++)
num[i]=123123123;
for(i=2;i<N;i++){
if(mark[i]==1) continue;
prim[pnum++]=i;
num[i]=1;
for(j=i+i;j<N;j+=i)
mark[j]=1;
}
for(i=2;i<N;i++){
if(num[i]>num[i-1]+1)
num[i]=num[i-1]+1;//д╛хо+1╣д
for(j=0;prim[j]*i<N;j++)
if(num[i]+1<num[prim[j]*i]||num[prim[j]*i]==0)
num[prim[j]*i]=num[i]+1;
}
for(i=2;i<N;i++)
num[i]=num[i]+num[i-1];
while(scanf("%d%d",&a,&b)!=EOF)
printf("%d\n",num[b]-num[a-1]);
return 0;
}