欧拉函数打表。因为(1,2)和(2,1)都要计算所以要乘2。
#include <iostream>
#include<stdio.h>
#define N 50010
using namespace std;
int phi[N];
void phi_table()
{
for(int i = 2;i <= N;i++) phi[i] = 0;
phi[1] = 1;
for(int i = 2;i <= N;i++) if(!phi[i])
for(int j = i;j <= N;j+=i)
{
if(!phi[j]) phi[j] = j;
phi[j] = phi[j]/i*(i-1);
}
}
int main()
{
int n;
phi_table();
while(scanf("%d",&n),n)
{
int ans = 1;
for(int i = 2;i <= n;i++)
ans+=(phi[i]*2);
printf("%d\n",ans);
}
return 0;
}