zoukankan      html  css  js  c++  java
  • 神盐皇

    终于会了

    先放一个极好的博客

    求满足$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} floor$个

    考虑$i$的取值情况,

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

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

    $sumlimits_{i=1}^{sqrt n}varphi(i)lfloorfrac{n}{i^2} floor$

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

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

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

    $varphi$是积性函数

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

    首先$p$为质数若$p|N$且$p^2 mid 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 mid N$)

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

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

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

    总结

    打表不会出奇迹

    关于gcd相关应用

  • 相关阅读:
    2017-12-25
    oracle 创建表,增加修改删除字段
    jqxWidgets 常用代码
    Oracle初始化用户-表空间-权限
    Oracle 切换数据库实例
    ORE(Oracle R Enterprise)安装步骤
    Java 枚举类的基本使用
    Java可变参数
    java的封箱和拆箱
    spring 九种设计模式
  • 原文地址:https://www.cnblogs.com/znsbc-13/p/11647802.html
Copyright © 2011-2022 走看看