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

    欧拉函数相关

    1,(phi(i))表示在1到i的数中与i互质的数的个数。

    2,(O(sqrt{n}))(phi)

    ​ 算数基本定理:

    [phi(i)=i*(p_1-1)/p_1*(p_2-1)/p_2*……*(p_k-1)/p_k ]

    ​ 枚举质因数套公式即可:

    ​ code:

    int phi(int x){
    	int re=x;
    	for(int i=2;i*i<=x;i++){
    		if(x%i==0){
    			re=re/i*(i-1);
    			while(x%i==0)x/=i;
    		}
    	}
    	if(x>1)re=re/x*(x-1);
    	return re;
    }
    

    3,线性筛欧拉函数

    ​ 1,如果当前数是质数,易知:

    [phi(i)=i-1 ]

    ​ 2,如果当前数取模枚举的质数不等于零,则:

    [phi(i*prime[j])=phi(i)*phi(prime[j]) ]

    ​ 3,如果当前数取模枚举的质数等于零,则:

    [phi(i*prime[j])=phi(i)*prime[j] ]

    开始愉快地写代码:

    void Euler_phi(){
    	memset(isprime,1,sizeof isprime);
    	phi[1]=1; 
    	for(int i=2;i<=n;i++){
    		if(isprime[i]){
    			phi[i]=i-1; prime[++tot]=i;
    		}
    		for(int j=1;j<=tot&&i*prime[j]<=n;j++){
    			isprime[i*prime[j]]=0;
    			if(i%prime[j]!=0){
    				phi[i*prime[j]]=phi[i]*phi[prime[j]];
    			}
    			else{
    				phi[i*prime[j]]=phi[i]*prime[j];
    				break;
    			}
    		}
    	}
    }
    
  • 相关阅读:
    indexOf--之美
    uniapp_切换主题
    ueditor调用其中的附件上传功能
    php7 编译安装 apache
    快速排序单循环
    插入排序
    走进svg
    phpstorm内网远程debug
    sass&compass&grunt
    centos7+nginx 1.9.0+php-fpm+phpstorm+xdebug+vmware开发环境搭建
  • 原文地址:https://www.cnblogs.com/wangxiaodai/p/9907450.html
Copyright © 2011-2022 走看看