神盐皇

终于会了

先放一个极好的博客

求满足$a+b|a*b,\&a<=n,b<=n$数对数量,$n<=10^{15}$

设$d=gcd(a,b)$

那么$a_1=\frac{a}{d},,b_1=\frac{b}{d}$

原要求变为$(a_1+b_1)*d|a_1*b_1*d*d$即$(a_1+b_1)|a_1*b_1*d$

考虑辗转相减法转化$gcd(a_1,b_1)==1$->$gcd(a_1+b_1,b_1)==1$->$gcd(a_1+b_1,a_1)==1$

$a_1+b_1$与$b_1$无公因数,与$a_1$无公因数$gcd(a_1+b_1,a_1*b_1)==1$

原式变为求$(a_1+b_1)|d$个数

$i=a_1+b_1$设$d=k*i$

$d*i<=n$故$k$共$\large \lfloor \frac {n}{i*i} \rfloor$个

考虑$i$的取值情况,

现在要求$gcd(x-i,i)==1$数个数

仍然考虑辗转相减$gcd(x,i)==1$个数,确定,$x<=i$,那么就是$\varphi(i)$

$\sum_{i=1}^{\sqrt n}\varphi(i)\lfloor\frac{n}{i^2}\rfloor$

然后关于$\varphi(i)$求法

我又忘了$\varphi(i)$线筛怎么求了,重新理解了一遍

首先计算式$\varphi(N)=N\prod_{i}^{i|N且i为质数}(1-\frac{1}{i})$

$\varphi$是积性函数

互质的$a,b$满足$\varphi(a*b)=\varphi(a)*\varphi(b)$

首先$p$为质数若$p|N$且$p^2\nmid N$ 那么说明互质$\varphi(N)=\varphi(\frac{N}{p})\varphi(p)$

$\varphi(p)=p-1$

那么$\varphi(N)=\varphi(\frac{N}{p})*(p-1)$($p$为质数若$p|N$且$p^2\nmid N$)

那么若$p|N$且$p^2|N$ 那么说明有相同质因子不互质

说明$N$与$\frac{N}{p}$拥有的质因子完全相同,根据计算式$\varphi(N)=N\prod_{i}^{i|N且i为质数}(1-\frac{1}{i})$后面部分完全一样差的只是前面的$N$

于是$\varphi(N)=\varphi(\frac{N}{p})*p$($p|N$且$p^2|N$)

总结

打表不会出奇迹

关于gcd相关应用

猜你喜欢

转载自www.cnblogs.com/znsbc-13/p/11647802.html