欧拉函数。

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互质

最新文章

  1. 第二章 XHTML基础
  2. aspx利用cookie值来停止silverlight中的计时器
  3. 发布ASP.NET网站时的设置
  4. 黑马程序员_Java_多线程
  5. 04747_Java语言程序设计(一)_第5章_图形界面设计(一)
  6. [Ext JS 4] 实战之Grid, Tree Gird编辑Cell
  7. Qt将窗体变为顶层窗体(activateWindow(); 和 raise() )
  8. ASP.NET MVC 创建控制器类过程
  9. 从零搭建基于golang的个人博客网站
  10. vue实战 - 车牌号校验和银行校验
  11. MYSQL临时表使用方法
  12. vue-cli使用vux时报错处理,“You may need an appropriate loader to handle this file type”
  13. typescript如何判断实例是否实现了接口?
  14. WPF DataGrid 每行ComboBox 内容不同的设置方法
  15. weex npm 报错 cb() never called!
  16. HDU.5819.Knights(概率DP)
  17. 越狱机器SSH安装与使用
  18. spring websocket + stomp 实现广播通信和一对一通信&lt;转&gt;
  19. 关于block元素和inline元素
  20. CentOS赋予一个普通用户root权限

热门文章

  1. python 之 处理excel表的xlwt模块学习记录
  2. Android自定义xml解析
  3. WEBLOGIC启动后,重启后控制台进入缓慢、延迟,探查WEBLOGIC
  4. iOS -- SKSpriteNode类
  5. Android:MVC模式(下)
  6. iOS开发 ----- 加载动画之牛顿摆的实现
  7. git extensions远程配置
  8. Java中的BigInteger在ACM中的应用
  9. hdu杭电1856 More is better【并查集】
  10. C#.NET的TabControl如何隐藏和显示页面