#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;
}
GCD Extreme(II) UVA11426
最新推荐文章于 2021-02-21 16:19:13 发布