Hdu2824 快速求欧拉函数和

时间:2014-01-20 08:54:13   收藏:0   阅读:355

#include<iostream>
using namespace std;

const int maxn = 3000000 + 10;
__int64 p[maxn];

void init(){
for(int i=1; i<maxn; i++){
p[i] = i;
}
for(int i=2; i<maxn; i++){
if(p[i] == i){
for(int j=i; j<maxn; j += i){ //注意j是i的倍数(约数)
p[j] = p[j] * (i - 1) /i;
}
}
}
}

int main(){
init();
int a, b;
while(cin>>a>>b){
__int64 ans = 0;
for(int i=a; i<=b; i++){
ans += p[i];
}
cout<<ans<<endl;
}
return 0;
}

原文:http://www.cnblogs.com/cbyniypeu/p/3526166.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!