标签:
3 100
3042
题解:打表水过;
代码:
1 #include<stdio.h> 2 #include<string.h> 3 const int MAXN= 3000010; 4 __int64 dp[MAXN]; 5 int main(){ 6 memset(dp,0,sizeof(dp)); 7 dp[1]=1; 8 for(int i=2;i<MAXN;i++){ 9 if(dp[i])continue; 10 for(int j=i;j<MAXN;j+=i){ 11 if(!dp[j])dp[j]=j; 12 dp[j]=dp[j]/i*(i-1); 13 } 14 } 15 for(int i=2;i<MAXN;i++)dp[i]+=dp[i-1]; 16 int a,b; 17 while(~scanf("%d%d",&a,&b))printf("%I64d\n",dp[b]-dp[a-1]); 18 return 0; 19 }
标签:
原文地址:http://www.cnblogs.com/handsomecui/p/4763755.html