POJ 2478 Farey Sequence 欧拉函数 .

来源:互联网 发布:男生自慰故事 知乎 编辑:程序博客网 时间:2024/05/02 11:48

题目地址:http://poj.org/problem?id=2478

对于每个分母,既约真分数的个数就是小于n的与n互质的个数,即欧拉函数的值φ(n)n

#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<cmath>#include<vector>using namespace std;typedef long long LL;void phi_table(int n,LL *phi){for(int i=1;i<=n;i++) phi[i]=0;phi[0]=1;for(int i=2;i<=n;i++)if(!phi[i])               //每一项i都是素数for(int j=i;j<=n;j+=i)     //i的倍数肯定都包含这个素因数 {if(!phi[j]) phi[j]=j;  //未计算的初始化为j,为了计算式子n*(1-1/p)中的n;phi[j]=phi[j]/i*(i-1);}}LL phi[1000000+5];int main(){phi_table(1000000+3,phi);int n;while(cin>>n&&n){LL sum=0;for(int i=2;i<=n;i++) sum+=phi[i];cout<<sum<<endl;}return 0;}

0 0
原创粉丝点击