POJ 2478 Farey Sequence(法雷级数+欧拉函数递推)

来源:互联网 发布:顶管计算软件 编辑:程序博客网 时间:2024/05/02 04:18

观察法雷级数的形式,分子分母均是1~n中不互质的数组成,很容易得到 F(n)=φ(2)+φ(3)+....+φ(n-1)+φ(n)

#include <iostream>using namespace std;const int maxn =1000000+5;typedef long long LL;LL ph[maxn];void getph(){    for(int i=1;i<maxn;i++) ph[i]=i;    for(int i=2;i<maxn;i+=2) ph[i]/=2;    for(int i=3;i<maxn;i+=2)        if(ph[i]==i){            for(int j=i;j<maxn;j+=i)                ph[j]=ph[j]/i*(i-1);        }    for(int i=3;i<maxn;i++)        ph[i]+=ph[i-1];}int main(){    int n;    getph();    while(cin>>n&&n){        cout<<ph[n]<<endl;    }    return 0;}


原创粉丝点击