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

    欧拉函数

    E(n)表示小于n的所有正数,与n互质的数的个数

    1     当p为素数时,显然E(p)= p-1

    2     当n=p^k (p为素数)时,E(p^k)=p^k-p^(k-1)

             证明:小于n的数一共有p^k-1个,其中不与p互质的有p*1,p*2,p*3,…p*(p^(k-1)-1)(显然有p^(k-1)-1个),则E(n)=(p^k-1)-(p^(k-1)-1)=p^k-p^(k-1);

    3     任何一个整数n都可以表示为n=(p1^a1)*(p2^a2)*…*(pn^an)

             若ab互质,E(ab)=E(a)*E(b),欧拉函数为积性函数

             E(n)=E(p1^a1)*E(p2^a2)*…*E(pn^an)

    =(p1^a1-p1^(a1-1))*(p2^a2-p2^(a2-1))*…*(pn^an-pn^(an-1))

    =(p1^a1*p2^a2*..*pn^an)*((1-1/p1)*(1-1/p2)*…*(1-1/pn))

    =n*(1-1/p1)*(1-1/p2)*…*(1-1/pn)

    4     E(p^k)=p^k-p^(k-1)=(p-1)*p^(k-1)

             E(p^(k-1))=p^(k-1)-p^(k-2)=(p-1)*p^(k-2)

             当k=1时,E(p)=p-1

             当k>1时,E(p^k)=E(p^(k-1))*p

             由上式,当p为素数时

             若p是n的约数,E(n*p)=E(n)*p

             否则,E(n*p)=E(n)*E(p)=E(n)*(p-1)

    //求n的欧拉函数值,模板


    #include"stdio.h"
    int phi(int n)
    {
    	int i;
    	int ans;
    	ans=1;
    	for(i=2;i*i<=n;i++)
    	{
    		if(n%i==0)
    		{
    			ans*=(i-1);
    			n/=i;
    			while(n%i==0)
    			{
    				ans*=i;
    				n/=i;
    			}
    		}
    	}
    	if(n!=1)ans*=n-1;
    	return ans;
    }
    int main()
    {
    	int n;
    	while(scanf("%d",&n)!=-1)
    		printf("%d
    ",phi(n));
    	return 0;
    }
    


  • 相关阅读:
    CentOS7安装Jenkins与配置
    pycharm的安装与配置
    python 3环境的搭建
    VMware workstation虚拟机与真机之间复制文件
    博客中添加图片查看器(支持图片查看、放大、缩小、翻转、切换、旋转)
    layui table 表格由于数据源问题部分数据无法渲染 ——数据源中有 length 字段
    初识Nginx——前后端发布、Nginx反向代理
    mui 的第一次使用体验以及遇到问题
    MyBatis 项目运行报错“No typehandler found for property ”
    U8登录 TQLoginHelper 调用目标发生异常
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3206674.html
Copyright © 2011-2022 走看看