|
The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description The Euler function phi is an important kind of function in number theory, (n) represents the amount of the numbers which are smaller than n and coprime to n, and this function has a lot of beautiful characteristics. Here comes a very easy question: suppose you are given a, b, try to calculate (a)+ (a+1)+....+ (b)
Input There are several test cases. Each line has two integers a, b (2<a<b<3000000).
Output Output the result of (a)+ (a+1)+....+ (b)
Sample Input 3 100
Sample Output 3042
Source 2009 Multi-University Training Contest 1 - Host by TJU
Recommend gaojie | We have carefully selected several similar problems for you: 2818 2825 2817 2822 2821
|
#include<cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
const ll mod= 1000000007;
const int M=3000005;
int num[M];
void init(int x)
{
int i,j;
for(i=2; i<=x; i++)
num[i]=i;
for(i=2; i<=x; i++)
if(num[i]==i)
for(j=i; j<=x; j+=i)
num[j]=(num[j]/i)*(i-1);
}
int main()
{
int a,b;
init(M);
while(cin>>a>>b)
{
int i;
ll res=0;
for(i=a; i<=b; i++)
res+=num[i];
cout<<res<<endl;
}
return 0;
}