zoukankan      html  css  js  c++  java
  • 欧拉函数学习笔记

    什么是欧拉函数

    记欧拉函数为(varphi(x))表示比(x)小且与(x)互质的数的个数。


    怎么算欧拉函数

    通项公式:(varphi(x)=x*prod(1-frac{1}{p_i})) ((p_i)(x)的质因数)

    因为欧拉函数是一个积性函数,因此我们可以用欧拉筛(线性筛)在(O(n))的时间内预处理出来:具体证明请见后文

    void GetPrime()
    {
    	memset(IsPrime,1,sizeof IsPrime);
    	IsPrime[1]=false;
    	phi[1]=1;
    	for(int i=2;i<=n;i++)
    	{
    		if(IsPrime[i]==true)
    			prime[++prime_tot]=i,phi[i]=i-1;
    		for(int j=1;j<=prime_tot and i*prime[j]<=n;j++)
    		{
    			IsPrime[i*prime[j]]=false;
    			if(i%prime[j]==0)
    			{
    				phi[i*prime[j]]=phi[i]*prime[j];//性质二
    				break;
    			}
    			phi[i*prime[j]]=phi[i]*phi[prime[j]];//性质一
    		}
    	}
    }
    
    

    欧拉函数的性质

    1. 欧拉函数是一个积性函数,因此我们有若(gcd(p,i/p)=1),则(varphi(i)=varphi(i/p)*varphi(p)) (我不会证)
    2. (gcd(p,i/p)!=1),且(p)为质数,则(varphi(i)=varphi(i/p)*p)

    证明:
    因为(gcd(p,i/p)!=1)而且(p)为质数,所以(i)一定由至少两个(p)组成。
    所以说(varphi(i/p)=varphi(i)/p)(因为对累乘没有影响,只对最前面的(x)有影响((x)指的是通项式中的(x)))
    证毕

  • 相关阅读:
    java基础的判断循环
    idea反编译
    JavaWeb
    JavaWeb
    JavaWeb
    JavaWeb
    pycharm使用virtualenv环境
    django常用操作
    Linux下Tomcat的安装以及项目部署
    Linux下JDK的安装
  • 原文地址:https://www.cnblogs.com/GoldenPotato/p/10297667.html
Copyright © 2011-2022 走看看