在数论中,欧拉函数(Euler's Totient Function)是一个非常重要的概念。它用于计算小于或等于某个正整数 n 且与 n 互质(即最大公约数为1)的正整数个数。本文将带你从零开始理解欧拉函数,并使用Python欧拉函数算法来高效实现它,即使你是编程小白也能轻松掌握!

欧拉函数通常记作 φ(n)(读作“phi of n”)。例如:
欧拉函数在密码学(如RSA算法)、数论算法以及数学竞赛中都有广泛应用。
欧拉函数具有以下重要性质:
基于这些性质,我们可以设计高效的算法来计算 φ(n)。
最直观的方法是遍历 1 到 n 的所有数,检查每个数是否与 n 互质。这需要用到最大公约数(GCD)函数。
def gcd(a, b): while b: a, b = b, a % b return adef euler_phi_brute(n): count = 0 for i in range(1, n + 1): if gcd(i, n) == 1: count += 1 return count# 测试print(euler_phi_brute(9)) # 输出: 6这种方法时间复杂度为 O(n log n),当 n 很大时效率很低,但非常适合初学者理解互质数计算的过程。
利用欧拉函数的公式:若 n 的质因数分解为 n = p₁^k₁ × p₂^k₂ × … × pₘ^kₘ,则
φ(n) = n × (1 - 1/p₁) × (1 - 1/p₂) × … × (1 - 1/pₘ)
我们只需找出 n 的所有不同质因数,即可快速计算 φ(n)。
def euler_phi(n): result = n p = 2 # 遍历可能的质因数 while p * p <= n: # 如果 p 是 n 的质因数 if n % p == 0: # 去除所有 p 因子 while n % p == 0: n //= p # 应用欧拉函数公式 result -= result // p p += 1 # 如果 n 本身是大于1的质数 if n > 1: result -= result // n return result# 测试print(euler_phi(9)) # 输出: 6print(euler_phi(10)) # 输出: 4print(euler_phi(1)) # 输出: 1这个算法的时间复杂度为 O(√n),比暴力法快得多,是实际开发中推荐使用的Python欧拉函数算法。
欧拉函数在以下场景中非常有用:
通过本文,你已经学会了:
现在你可以自信地在项目或竞赛中使用欧拉函数了!如果你觉得有帮助,不妨动手写一写代码,加深理解。
关键词回顾:欧拉函数、Python欧拉函数算法、数论算法、互质数计算
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122864.html