欧拉函数题目(Farey Sequence)

题目描述 
给定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; 

}

猜你喜欢

转载自blog.csdn.net/to_more_excellent/article/details/81188799