首页 > 其他分享 >欧拉函数

欧拉函数

时间:2024-01-25 20:25:50浏览次数:25  
标签:phi 函数 limits int varphi times prod 欧拉

欧拉函数

欧拉函数 \(\varphi(n)\) 表示 \(1 \sim n - 1\) 中与 \(n\) 互质的数的个数。显然的,当 \(n\) 为质数,有 \(\varphi(n) = n - 1\)。

性质与推导

  • 显然的,当 \(\gcd(a,b)\),有 \(\varphi(a \times b) = \varphi(a) \times \varphi(b)\),oi-wiki 上管这个叫做积性函数。

  • 显然的,当 \(b \bmod a = 0\),有 \(\varphi(a \times b) = a \times \varphi(b)\)。

  • 设 \(n = \prod\limits_{i = 1}^{s} p_i^{c_i}\),即将 \(n\) 进行唯一分解,有 \(\varphi(n) = n \times \prod\limits_{i = 1}^{s}\frac{p_i - 1}{p_i}\),证明如下:

\(\varphi(p^c) = p^c - p^{c - 1} = p^{c - 1} \times (p - 1)\),显然,值不超过 \(p\) 的自然数中,有 \(p^{c - 1}\) 个 \(p\) 的倍数,故可得上式;

由欧拉函数的积性,当 \(\gcd(a,b)\),有 \(\varphi(a \times b) = \varphi(a) \times \varphi(b)\),所以

\[\begin{aligned} \varphi(n) &= \prod\limits_{i = 1}^{s}\varphi(p_i^{c_i})\\ &= \prod\limits_{i = 1}^{s}p_i^{c_i - 1} \times (p_i - 1)\\ &= \prod\limits_{i = 1}^{s}p_i^{c_i} \times \frac{p_i - 1}{p_i}\\ &= n \times \prod\limits_{i = 1}^{s}\frac{p_i - 1}{p_i} \end{aligned} \]

根据最后一条我们能够筛出 \(\varphi(n)\)。

$\tt{Link}$
il int get_phi(int x) {
    int phi = x;
    for (int i = 2; i * i <= x; ++ i ) {
        if (x % i == 0) {
            phi = phi / i * (i - 1);
            while (x % i == 0) x /= i;
        }
    }
    if (x > 1) phi = phi / x * (x - 1);
    return phi;
}

标签:phi,函数,limits,int,varphi,times,prod,欧拉
From: https://www.cnblogs.com/songszh/p/17987781/oulahanshu

相关文章

  • JS中的箭头函数与this
    JS中的箭头函数与thisJavaScript在ES6语法中新增了箭头函数,相较于传统函数,箭头函数不仅更加简洁,而且在this方面进行了改进。this作为JavaScript中比较诡异的存在,许多文章对于this的解释也不尽相同,本篇文章试图厘清JS中函数与this的关系。一、JS中函数的写法1.常规函数的写法......
  • 依次替换(函数集团)
    问题:将以下考题中的空格替换为正确答案。这个以前几乎不可能用函数解决的问题现在已经不是问题了。=REDUCE(A2,TEXTSPLIT(B2,";"),LAMBDA(x,y,SUBSTITUTE(x,"",y,1)))第一次运算:x指代A2,y指代TextSplit结果的第一个值,利用Substitute将x中第一个空格替换成y;第二次运算:x指......
  • 29虚函数-静态绑定-动态绑定
    虚函数-静态绑定-动态绑定如果类中定义了虚函数,那么编译阶段,编译器会给这个类类型产生一个唯一的vftable虚函数表,其中主要存储的是RTTI指针和虚函数的地址。程序运行时,每一张虚函数表都会加载到内存的.rodata只读数据区。一个类中定义了虚函数,那么这个类的对象,其运行时,内存中开......
  • 30虚析构函数
    虚析构函数哪些为函数不能实现为虚函数?虚函数要能产生函数地址,并记录在虚函数表中。对象必须存在(vfptr->vftable->虚函数地址)。构造函数不能是虚函数,不满足第二点。且构造函数中调用的函数都是静态绑定的。过程是:先调用基类的构造函数,欲使用动态绑定,但此时还没有执行派生......
  • C++-类和对象(2)默认成员函数
    在上一篇博客中,和大家分享了C++中类和对象的定义,类的大小的计算等知识,那么如果C++中一个自定义类中不定义任何的成员变量和成员函数,那么这个类中就是一个什么都没有的空类了吗?实际上,如果在一个类中,如果类中什么成员都不定义,编译器会自动生成6个默认成员函数。接下来借助一个自定义M......
  • JavaScript 中 eval() 函数
    JavaScript的eval()函数的作用是将一个字符串作为脚本代码进行解析和执行。它可以动态地执行字符串中的JavaScript代码,并返回执行结果。eval()函数可以用于执行任何有效的JavaScript代码,包括声明变量、定义函数、执行表达式等。eval()函数的语法如下:varformArray=$('#formRec......
  • Hive - 窗口函数
       1、窗口函数分组,分组聚合,聚合开窗函数和排序开窗函数 createtablestudent_scores( idint, studentIdint, languageint, mathint, englishint, classIdstring, departmentIdstring ); idstudentIdlanguagemathenglishclassIddepartme......
  • 函数--递归调用
    1.怎么写出一个递归函数step1,写好公式公式是怎么得出的?一般来说通过数学上的归纳演绎、总结得出,具体看下面的例子。step2,一定要写结束条件这一步比较简单,还是得到公式比较关键。2.走楼梯Description假如有n个台阶,一次只能上1个台阶或2个台阶,请问走到第n个台阶有几种走法?为......
  • dremio random 函数造成dremio crash 问题
    以前没注意使用random,在看社区问题的时候测试了下发现的确有类似的问题,官方的解决方法是通过配置禁用gandiva优化参考配置支持key格式 exec.disabled.gandiva-functions:<function>;<function>参考配置参考禁用处理sabot/kernel/src/main/java......
  • 欧拉路径、欧拉回路、欧拉图傻傻分不清楚?看这一篇就够了!
    欧拉路径、回路、图前言当一手标题党,快乐~之前一直分不清楚,写篇笔记分辨一下。欧拉路径可以一笔画的路径,称为欧拉路径。不要求起点终点为同一点。判定:有向图:图中只有一个出度比入度大\(1\)的点(起点),与一个入度比出度大\(1\)的点(终点),其余点出入度相等。无向图:图中只有......