The Euler function
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
裸的欧拉函数题
一开始想预处理处前缀和直接输出,结果内存超了,然后一个一个暴力加起来就过了。。
code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 3000010;
int phi[maxn];
void Euler(){
phi[1] = 1;
for(int i = 2; i < maxn; i++){
phi[i] = i;
}
for(int i = 2; i < maxn; i++){
if(phi[i] == i){
for(int j = i; j < maxn; j += i){
phi[j] = phi[j] / i * (i - 1);
}
}
}
}
int main(){
Euler();
int a,b;
while(scanf("%d%d",&a,&b)!= EOF){
ll ans = 0;
for(int i = a; i <= b; i++){
ans += (ll)phi[i];
}
printf("%lld\n",ans);
}
return 0;
}