Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
欧拉函数的性质:当n为奇数时,φ(2n)=φ(n);若m,n互质,φ(mn)=φ(m)φ(n);对于素数p,φ(p)= p - 1
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define maxn 3000000 + 5
using namespace std;
long long eular[maxn];
void Eular(){
int i,j;
for(i=1;i<maxn;++i){
eular[i]=i;
}
for(i=2;i<maxn;++i){
if(eular[i]==i){
for(j=i;j<maxn;j+=i){
eular[j]=eular[j]/i*(i-1);
}
}
}
for(i=2;i<maxn;++i){
eular[i]+=eular[i-1];
}
}
int main()
{
Eular();
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%lld\n",eular[b]-eular[a-1]);
}
return 0;
}