1. 数论中的欧拉函数复习
F(x): 1~x中与x互质的数的个数,称为欧拉函数
欧拉函数是积性函数,即F(x*y)=F(x)*F(y),如果x和y互质
另外:F(x)=x-1,如果x是素数
F(xp)=xp-xp-1=xp-1*(x-1)
于是关于欧拉函数的求法如下:F(x)=F(x1p1*x2p2*...xnpn),然后采用上式求解
代码如下:
2. 关于Sicily1085
给定一个数N,要求1~N之间的每个数与N的最大公约数之和
算法:枚举每一个最大公约数i,求1~N之间与N的最大公约数是i的数的个数,设为p个,于是答案加上i×p
枚举的时候因为gcd(x,N)=i即等价于gcd(x/i,N/i)=1,于是等价于求解N/i的欧拉数,这样枚举i,加上i*(N/i)的欧拉数
参考代码如下: