题目描述
给定N,求所有小于等于N的a/b,gcd(a,b)=1(a<b).
#include<stdio.h>
#include<string.h>
#include<math.h>
long long phi[1000001];
#define maxn 1000000
int main()
{
int i,j;
for (i = 1; i <= maxn; i++) phi[i] = i;
for (i = 2; i <= maxn; i += 2) phi[i] /= 2;
for (i = 3; i <= maxn; i += 2) if(phi[i] == i) {
for (j = i; j <= maxn; j += i)
phi[j] = phi[j] / i * (i - 1);
}
for(i = 3;i < 1000001; i++)
phi[i] += phi[i - 1];
int n;
while(scanf("%d", &n), n)
printf("%lld\n", phi[n]);
return 0;
}