当前位置: 首页 >  技术宝典 >  欧拉函数证明与代码实现

欧拉函数证明与代码实现

导读:欧拉函数.定义.对于正整数n小于等于n的数中与n互质的数的个数记为\(\varphi(n)\),即为欧拉函数.欧拉公式.由算数基本定理任意一个正整数都可以写作n=\(p_1^{a_1}p_2^{a_2}\cdots pk^{a^k}\).那么\(\varphi(n)=n\prod

欧拉函数

  • 定义
    对于正整数n小于等于n的数中与n互质的数的个数记为\(\varphi(n)\),即为欧拉函数

  • 欧拉公式
    由算数基本定理任意一个正整数都可以写作n=\(p_1^{a_1}p_2^{a_2}\cdots pk^{a^k}\)
    那么\(\varphi(n)=n\prod\limits
    {i=1}^{k}({1-\frac{1}{p_i}})\)

  • 数学证明
    首先\(\varphi(n)\)是一个积性函数
    即 \(\varphi(a_1a_2)=\varphi(a_1)\varphi(a_2)\)这个的证明这里不作叙述可看这个链接积性证明
    然后从1到一个数\(p_n^{a_n}\)一共有\(p_n^{a_n}\)个数其中与其不互质的有\(p_n,2p_n,3p_n\dots p_n^{a_n}(pn^{a{n-1}}*p_n)\)一共有\(pn^{a{n-1}}\)个数,所以与其互质的一共有\(p_n^{a_n}(1-\frac{1}{p_n})个\)
    所以有:

\[ \varphi(n)=\varphi(p_1^{a_1})*\varphi(p_2^{a_2})\dots\varphi(p_k^{a_k})\
=p_1^{a_1}(1-\frac{1}{p_1})*p_2^{a_2}(1-\frac{1}{p_2})\dotsp_k^{a_k}\\=n\prod\limits_{i=1}^{k}(1-\frac{1}{p_i}) \]

  • 代码实现

    #include using namespace std; int main() { int n; cin>>n; while(n–) { int a; scanf(“%d”,&a); int res=a; for(int i=2;i<=a/i;i++) { if(a%i==0) { res=res/i(i-1);//注意先除再乘防止爆int } while(a%i==0) { a/=i; } } if(a>1) { res=res/a(a-1); } printf(“%d\n”,res); }

    return 0;
    

    }

  • 代码细节
    注意res=res/i*(i-1)这里要先除再乘防止爆int 可能会有疑问我们推导的公式中\(1-\frac{1}{p_i}\)是一个小数但是c++里/是向下取整的,那么这里会不会有问题呢?其实是完全没问题的 我们可以看到只有当a%i==0时我们才会进行res的操作并且每次循环中a至少都和res除i除的一样多也就是说只要a中有约数 i 那么res中也一定有 i 一定不会出现小数。

Written with StackEdit中文版.

内容
  • 绘画手残党的福音:涂鸦线稿秒变绝美图像
    绘画手残党的福音:涂鸦线稿秒变绝
    2023-12-08
    摘要: 涂鸦线稿秒变绝美图像,ControlNet-.Scribble2Img适配华为云ModelArts,提供更加便利
  • 线上服务器磁盘爆了,如何快速处理?
    线上服务器磁盘爆了,如何快速处理
    2023-12-08
    分享技术,用心生活.有一天突然收到预警短信,显示是服务器磁盘占用100% 心里一想这事大了,得赶紧处理啊!深一吸口气默念
  • 安全测试前置实践2-安全渗透测试
    安全测试前置实践2-安全渗透测试
    2023-12-04
    作者:京东物流 陈维.一、引言.本文我们将以围绕系统安全质量提升为目标,讲述在功能安全测试 &安全渗透测试上实践过程。.
  • 架构师日记-如何写的一手好代码
    架构师日记-如何写的一手好代码
    2023-12-06
    作者:京东零售 刘慧卿.一 前言.在日常工作中,我经常听到部分同学抱怨代码质量问题,潜台词是:“除了自己的代码,其他人写
  • 万字好文:大报文问题实战
    万字好文:大报文问题实战
    2023-12-02
    导读.大报文问题,在京东物流内较少出现,但每次出现往往是大事故,甚至导致上下游多个系统故障。大报文的背后,是不同商家业务
  • docker compose 快速安装 单机kafka版并且 持久化
    docker compose 快
    2023-12-05
    kafka 的业务场景不用多说了,耗时缓存队列,利用高吞吐以及队列模型实现 高并发情况下流量削峰,高流量的日志收集,都是