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;
    }
    


  • 相关阅读:
    十一、VueJs 填坑日记之使用Amaze ui调整列表和内容页面
    十、VueJs 填坑日记之在项目中使用Amaze UI
    九、VueJs 填坑日记之在项目中使用jQuery
    八、VueJs 填坑日记之参数传递及内容页面的开发
    七、VueJs 填坑日记之渲染一个列表
    六、VueJs 填坑日记之初识*.Vue文件
    jmeter连接mysql数据库
    Markdown基础语法
    Python自动化准备工作(pycharm安装)
    Android手机测试环境搭建
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3206674.html
Copyright © 2011-2022 走看看