GCD Extreme(II) UVA11426

来源:互联网 发布:电脑动画软件 编辑:程序博客网 时间:2024/04/30 09:56
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <queue>#include <algorithm>#include <vector>#include <cstring>#include <stack>#include <cctype>#include <utility>   #include <map>#include <string>  #include <climits> #include <set>#include <string> #include <sstream>#include <utility>   #include <ctime>using std::priority_queue;using std::vector;using std::swap;using std::stack;using std::sort;using std::max;using std::min;using std::pair;using std::map;using std::string;using std::cin;using std::cout;using std::set;using std::queue;using std::string;using std::istringstream;using std::make_pair;using std::greater;using std::endl;typedef long long LL;const int MAXN(4000000);int phi[MAXN+10];void pre(){for(int i = 2; i <= MAXN; ++i)if(!phi[i])for(int j = i; j <= MAXN; j += i){if(!phi[j])phi[j] = j;phi[j] = phi[j]/i*(i-1);}}LL table[MAXN+10];void fun(){for(int i = 1; i <= MAXN; ++i){int k = 1;for(int j = i; j <= MAXN; j += i, ++k)table[j] += (LL)i*phi[k];}for(int i = 2; i <= MAXN; ++i)table[i] += table[i-1];}int main(){pre();fun();int n;while(scanf("%d", &n), n){printf("%lld\n", table[n]);}return 0;}

原创粉丝点击