http://acm.hdu.edu.cn/showproblem.php?pid=2824
同上一题,裸欧拉函数
View Code
#include <iostream> #include <cstdlib> #include <cstring> #include <string> #include <stack> #include <queue> #include <map> #include <algorithm> using namespace std; const int MAX=3000001; int phi[MAX]; int main() { for(int i=2;i<MAX;i++) if(!phi[i]) for(int j=i;j<MAX;j+=i) { if(!phi[j]) phi[j]=j; phi[j]-=phi[j]/i; } int a,b; while(~scanf("%d%d",&a,&b)) { __int64 sum=0; for(int i=a;i<=b;i++) sum+=phi[i]; printf("%I64d\n",sum); } return 0; }