Algorithm: Euler function
2024-09-08 13:30:19
欧拉函数。
phi(n)表示比n小的与n互质的数的个数,比如
phi(1) = 1;
phi(2) = 1;
phi(3) = 2;
phi(4) = 2;
phi(5) = 4;
性质:
1. 如果p为质数,则phi(p) = p-1;
2. 如果p为质数并且a为正整数,则phi(p^a) = p^a - p^(a-1);
证明:p为质数,所以所有可以和p相乘小于p^a的数有p^a/p = p^(a-1)个,剩下的都与p^a互质。
3. phi(ab) = phi(a)*phi(b)
4. n = p1^a1*p2^a2*...*pk^ak
phi(n) = phi(p1^a1)*phi(p2^a2)*...*phi(pk^ak)
= (p1^a1-p1^(a1-1))*(p2^a2-p2^(a2-1))*...(pk^ak-pk^(ak-1))
=n*(1-1/p1)*(1-1/p2)*...*(1-1/pk)
实现代码:
int phi (int n) {
int result = n;
for (int i=; i*i<=n; ++i)
if (n % i == ) {
while (n % i == )
n /= i;
result -= result / i;
}
if (n > )
result -= result / n;
return result;
}
应用:
欧拉定理:a^(phi(m)) = 1 (mod m)
其中a与m互质
费马定理:a^(m-1) = 1 (mod m)
其中a与m互质
最新文章
- 第二章 XHTML基础
- aspx利用cookie值来停止silverlight中的计时器
- 发布ASP.NET网站时的设置
- 黑马程序员_Java_多线程
- 04747_Java语言程序设计(一)_第5章_图形界面设计(一)
- [Ext JS 4] 实战之Grid, Tree Gird编辑Cell
- Qt将窗体变为顶层窗体(activateWindow(); 和 raise() )
- ASP.NET MVC 创建控制器类过程
- 从零搭建基于golang的个人博客网站
- vue实战 - 车牌号校验和银行校验
- MYSQL临时表使用方法
- vue-cli使用vux时报错处理,“You may need an appropriate loader to handle this file type”
- typescript如何判断实例是否实现了接口?
- WPF DataGrid 每行ComboBox 内容不同的设置方法
- weex npm 报错 cb() never called!
- HDU.5819.Knights(概率DP)
- 越狱机器SSH安装与使用
- spring websocket + stomp 实现广播通信和一对一通信<;转>;
- 关于block元素和inline元素
- CentOS赋予一个普通用户root权限