UVA 11426GCD - Extreme (II)

来源:互联网 发布:萨德部署完成 知乎 编辑:程序博客网 时间:2024/04/30 15:19

题意:计算G的值

G=0;for(i=1;i<N;i++)for(j=i+1;j<=N;j++){    G+=gcd(i,j);}

思路:设答案为F[n],F[n]=F[n-1]+gcd(1,n)+gcd(2,n)+…+gcd(n-1,n) 设G[n]=gcd(1,n)+gcd(2,n)+…+gcd(n,n), F[n]=F[n-1]+g[n].关于G[n]的求法。若是gcd(i,n )==ai的个数有bi个,那么G[n]=sum(ai*bi).显然当ai=1时,bi的值就是phi(n)(欧拉函数)的值。若,
i!=1,gcd(i,n)==ai等价于gcd(i/ai,n/ai)==1;所以bi的值为phi(n/ai)。

0 0
原创粉丝点击