欧拉函数与欧拉定理
欧拉函数和欧拉定理
欧拉函数的定义
欧拉函数(Euler's totient function),即
比如说
当 n 是质数的时候,显然有
欧拉函数的一些性质&结论
- 欧拉函数是积性函数
不知道积性函数?点这里。
-
。证明:如果
,那么
如果我们设
表示 的数的个数,那么 。根据上面的证明,我们发现
,从而
。注意到约数
和 具有对称性,所以上式化为 。 -
若
,其中 是质数,那么 。证明:显然对于从 1 到
的所有数中,除了 个 的倍数以外其它数都与 互素,故 ,证毕。 -
由唯一分解定理,设
,其中 是质数,有 。证明:
- 引理:设
为任意质数,那么 。
- 引理:设
如何求欧拉函数值
如果只要求一个数的欧拉函数值,那么直接根据定义质因数分解的同时求就好了。
int phi(int n) {
int ans = n;
for (int i = 2; i * i <= n; i++)
if (n % i == 0) {
ans = ans / i * (i - 1);
while (n % i == 0) n /= i;
}
if (n > 1) ans = ans / n * (n - 1);
return ans;
}
如果是多个数的欧拉函数值,可以利用线性筛法来求得。
void pre() {
memset(isprime, 1, sizeof(isprime));
int cnt = 0;
isprime[1] = 0;
phi[1] = 1;
for (int i = 2; i <= 5000000; i++) {
if (isprime[i]) {
prime[++cnt] = i;
phi[i] = i - 1;
}
for (int j = 1; j <= cnt && i * prime[j] <= 5000000; j++) {
isprime[i * prime[j]] = 0;
if (i % prime[j])
phi[i * prime[j]] = phi[i] * phi[prime[j]];
else {
phi[i * prime[j]] = phi[i] * prime[j];
break;
}
}
}
}
欧拉定理
与欧拉函数紧密相关的一个定理就是欧拉定理。其描述如下:
若
证明:
证明转载自M_lear
记小于 n 且与 n 互质的正整数集合为
令
由最大公约数的性质可得
所以
假设
即
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】