zoukankan      html  css  js  c++  java
  • 欧拉函数

    在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1,φ(8)=4(1,3,5,7))

    通式:φ(n)=n*((1-1/p1)*(1-1/p2)*...(1-1/pk)),其中p1..pk是n的质因子,(如8=2*2*2,φ(8)=8*(1-1/2)= 4)

    http://acm.hdu.edu.cn/showproblem.php?pid=2588

    题目大意:求1~N上与N的最大公约数大于M的数X的个数(2<=N<=1000000000, 1<=M<=N)

    题解:N=a*b,X=a*d  即gcd(N,X)=a ,而对于每一个a,都会有一个固定的b(因为N是确定的),而由于X<=N且gcd(N,X)=a,所以b与d互质且d<=b,也就是求与每一个a对应的每一个b互质的数d的个数,也就是通过枚举a,然后求和每个b的欧拉函数值(如果直接枚举1~N(即通过找a>=m来求和Eular(N/a)),复杂度为O(N),会TLE,而不如枚举1~sqrt(N)(通过找a>=m或者N/a>=m来求和Eular(N/a)或者Eular(a)))

    1、求欧拉函数值

    2、通过求满足要求的N/a和a来降低遍历枚举的复杂度(由O(N)降为O(sqrt(N)))

  • 相关阅读:
    px和rem换算
    使用Android Studio创建Android项目
    Hopscotch
    AtCoder Grand Contest 010 --C:Cleaning
    Hello world!
    概率生成函数
    FFT 学习笔记
    扩展中国剩余定理(excrt)
    组合恒等式
    常见数列
  • 原文地址:https://www.cnblogs.com/MekakuCityActor/p/8664412.html
Copyright © 2011-2022 走看看