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

    欧拉欧拉欧拉欧拉欧拉欧拉…………

    欧拉函数phi(x)表示比x小且与x互质的数,这个东西有时候还是挺有用的,尤其是出现等比例关系的时候

    一般求phi直接筛

    怎么筛呐

    需要先了解一些欧拉函数的性质:

    1.如果x是质数,phi(x)=x-1

    2.phi(x*y)=phi(x)*phi(y)(也就是说phi是个卷积)

    证明:1.使用显然法证明:显然  2.我太弱不会,有兴趣的同学可以自行查找相关资料(逃

    然后就可以愉快的递推求解了

    跟莫比乌斯函数miu很相似,在求phi的时候要顺便把质数给筛出来

    然后大概流程就是枚举i,如果i是质数,加入质数表,phi(i)=i-1,否则枚举质数知道质数*i>要求的范围,其中先把i*质数标记不是质数,phi(i*质数)=phi(i)*phi(质数)

    这里如果i%质数==0,phi(i*质数)=phi(i)*质数,而且需要brak,证明有点玄,我也只能勉强意会,有兴趣的同学们可以自行推到(逃

    这里需要注意,i%质数==0的时候phi(i*质数)=phi(i)*质数,因为phi的积性只有在i和质数互质的时候才成立,至于为什么这里要*质数,请同学们自行推到(逃

    代码:

     1 void shai(){
     2     memset(kang,0,sizeof(kang));
     3     phi[1]=1;
     4     for(int i=2;i<=n;i++){
     5         if(!kang[i]){  phi[i]=i-1;  zhi[++ztop]=i;}
     6         for(int j=1;j<=ztop && i*zhi[j]<=n;j++){
     7             kang[i*zhi[j]]=true;
     8             if(i%zhi[j]==0){  phi[i*zhi[j]]=phi[i]*zhi[j];  break;}
     9             phi[i*zhi[j]]=phi[i]*phi[zhi[j]];
    10         }
    11     }
    12 }
    View Code
  • 相关阅读:
    何为大数据
    开启新征程
    碰撞检测系统
    利用卷积自编码器对图片进行降噪
    Tensorflow实现稀疏自动编码(SAE)
    Linux主机定期打补丁修复漏洞
    值得研究的学问
    TensorFlow 安装教程
    早上收到这样一份通知,求一无漏洞框架,无力吐槽
    如何修改WAMP中mysql默认空密码 以及修改时报错的处理方法
  • 原文地址:https://www.cnblogs.com/JSL2018/p/5862864.html
Copyright © 2011-2022 走看看