选自《洛谷深入浅出进阶篇》——欧拉函数+欧拉定理+扩展欧拉定理

欧拉函数:

  1. 欧拉函数定义:\psi \left ( n \right ) = 1~n中与n互质的数的个数。 比如 \psi \left ( 12 \right ) = 4    
  2. 欧拉函数是积性函数:(也就是)当 n与m互质的时候: \psi \left ( nm \right ) = \psi \left (n \right ) \psi \left(m \right )
  3. 由算术基本定理,我们可以设n=\prod_{i=1}^{m} p_{i}^{k_{i}},那么我们只要计算出\psi \left(p_{i}^{k_{i}} \right )的取值就能求出\psi \left(n \right )的取值。 下面给出证明

\psi \left(p_{i}^{k_{i}} \right )的取值怎么求? 也就是求1~p_{i}^{k_{i}}中与p_{i}^{k_{i}}互质的数的个数

我们可以求与p_{i}^{k_{i}}不互质的数的个数,由于p是质数,所以与p_{i}^{k_{i}}不互质的数一定是p的倍数

那么1~p_{i}^{k_{i}}中,p的倍数就是 \frac{p_{i}^{k_{i}}}{p}=p_{i}^{k_{i}-1}, 那么我们就知道与p_{i}^{k_{i}}不互质的数的个数 就是p_{i}^{k_{i}}-p_{i}^{k_{i}-1 }。也就是 p_{i}^{k_{i}}\left(1-\frac{1}{p} \right )

由于p_{i}^{k_{i}}之间互质,且欧拉函数是一个积性函数,那么有

\psi \left(n\right) = \prod_{i=1}^{m} \psi \left( p_{i}^{k_{i}} \right ) =\left(\prod_{i=1}^{m} p_{i}^{k_{i}} \right)\cdot \left(\prod_{i}^{m}\left(1-\frac{1}{p}\right)\right)=n\cdot \prod_{i}^{m}\left(1-\frac{1}{p} \right)

所以我们只需要求出n的所有质因子p,然后求出 1-\frac{1}{p} 的乘积即可 

phi = n;
for(int i=2 ; i*i<=n ; i++ )if( n%i == 0 ){phi = phi/i * (i-1 )   // 1- 1/p == (p-1)/p 为了防止爆int,故意不写成phi*(i-1)/iwhile ( n%i==0 ) n/=i ;}
if(n!=1) phi =phi/n *(n-1);  //防止n有一个大于 sqrt(n)的质因子的情况

以上就是欧拉函数的板子,请牢牢记住,后面回经常用到。

欧拉定理:对于正整数a,n,若a\perpn,则a^{\psi\left(n\right)}\equiv 1 \left(mod \ n \right )

扩展欧拉定理:

对于正整数a,n,始终有 a^{\psi \left(n \right )}\equiv a^{k\psi \left(n \right )}\left(mod\ n \right ),k\epsilon N_{+}

那么对于任意的正整数a,k,n ,当k大于 \psi\left(n \right )时,

a^{k} \equiv a^{k\ mod \ \psi\left(n \right )+\psi\left(n \right )}\left(mod\ n \right )

对于这些定理,此处不加以证明,背过即可。

下面给出一些例题,用来了解一些欧拉函数在算法竞赛中的应用

(缓慢更新中)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5组10个共50个音频可视化效果PR音乐视频制作模板

我们常常看到的图形跟着音乐跳动&#xff0c;非常有节奏感&#xff0c;那这个是怎么做到的呢&#xff1f;5组10个共50个音频可视化效果PR音乐视频制作模板满足你的制作需求。 PR音乐模板|10个音频可视化视频制作模板05 https://prmuban.com/36704.html 10个音频可视化视频制作…

linux下查看文件当下的所有文件的大小和查找大文件

要查询一个文件夹下面所有文件的总大小&#xff0c;您可以使用 du 命令配合一些参数。如果您只关心总大小&#xff0c;而不是各个子文件夹或文件的大小&#xff0c;可以使用以下命令&#xff1a; du -sh /path/to/your/directory在这个命令中&#xff1a; du 是磁盘使用情况的…

设计师福利!免费实用的7款Figma插件,让你的工作事半功倍!

如今&#xff0c;Figma已经成为主流的原型和数字设计软件之一&#xff0c;许多UI设计师和设计团队开始选择使用Figma。随着Figma的快速更新和迭代&#xff0c;Figma插件库变得越来越丰富。如果使用得当&#xff0c;将有助于提高您的设计效率。本文将介绍7个工作中非常实用的Fig…

echarts词云图echarts-wordcloud使用方法

1、echarts5.0以下的版本使用 echarts-wordcloud 1.0 的词云 1. 安装 wordCloud 1.0 依赖包npm install echarts-wordcloud12. man.js 注入import echarts-wordcloud 2、echarts5.0及以上的下载 echarts-wordcloud 2.0 版本 注意&#xff1a;npm install echarts-wordcloud …

微软发布Orca2,“调教式”教会小规模大语言模型如何推理!

我们都知道在大多数情况下&#xff0c;语言模型的体量和其推理能力之间存在着正相关的关系&#xff1a;模型越大&#xff0c;其处理复杂任务的能力往往越强。 然而&#xff0c;这并不意味着小型模型就永远无法展现出色的推理性能。最近&#xff0c;奶茶发现了微软的Orca2公开了…

自动化操作脚本

文章目录 vbsopenCV pyautogui vbs SSH连接并执行指令操作 Dim WshShell Set WshShellWScript.CreateObject("WScript.Shell") WshShell.Run "cmd.exe" WScript.Sleep 1000 WshShell.SendKeys "ssh xcmg10.27.40.103" WshShell.SendKeys &qu…

xxl-job详解

目录 1、xxl-job介绍1.1 xxl-job的原理1.1.1 执行器的注册和发现1.1.2 调度中心调用执行器 1.2 quartz和xxl-job对比 2、快速入门2.1 下载并启动2.2 在调度中心新增定时任务2.3 任务运行模式(BEAN、GLUE)2.4 xxl-job的总结 3、后端专属技术群 1、xxl-job介绍 ​ xxl-job是一个…

Python源码30:海龟画图turtle画紫色的小熊

turtle模块是一个Python的标准库之一&#xff0c;它提供了一个基于Turtle graphics的绘图库。Turtle graphics是一种流行的绘图方式&#xff0c;它通过控制一个小海龟在屏幕上移动来绘制图形。 turtle模块可以让您轻松地创建和控制海龟图形&#xff0c;从而帮助您学习Python编…

Qt12.8

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

lv11 嵌入式开发 中断控制器14

目录 1 中断控制器 ​编辑 2 Exynos4412下的中断控制器 2.1 概述 2.2 特征 ​编辑 2.3 中断状态 2.4 中断类型 2.5 中断控制器GIC中断表 3 中断控制器寄存器详解 3.1 ICDDCR&#xff08;Interrupt Controller Distributor Control Register&#xff09; 3.2 ICDISER…

当你还在纠结用什么技术时,这位独立开发者用PHP和JavaScript实现财务自由了

大家好&#xff0c;我是风筝&#xff0c;微信搜「古时的风筝」&#xff0c;更多干货 一个个人产品卖了5400万&#xff0c;这大概就是最成功的独立开发者了吧 这位独立开发者是 levelsio&#xff0c;他的真名是 Pieter Levels&#xff0c;是一位荷兰的独立开发者。看看人家的工…

WPF DataGrid 动态增加列

方式一&#xff1a;通过DataGrid 数据源即DataTable&#xff0c;在DataTable里面动态增加了列之后&#xff0c;重新构造每一行数据&#xff0c;设置DataGrid.ItemsSource null; 然后再重新设置ItemsSource到DataTable public partial class MainWindow : Window{public MainWi…

【Java基础系列】Cron表达式入门

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

优秀案例 | 元宇宙双语财经科技主播“舒望”主持首届粤港澳大湾区元宇宙国际传播论坛

12月6日&#xff0c;由南方财经全媒体集团指导、大湾区元宇宙国际传播实验室(GBA MIC Lab&#xff09;主办、南财国际传播中心和21世纪经济报道共同承办&#xff0c;以“多元共创开放共享”为主题的首届粤港澳大湾区元宇宙国际传播论坛在广州隆重开幕。 “立足湾区&#xff0c;…

Kubernetes - 为什么 K8S 在容器里不能调用自己?

问题描述 最近遇到一个神奇的现象&#xff0c;在 K8S 的 POD 容器中&#xff0c;比如 pod name&#xff1a;mini-appnamespace&#xff1a;devport&#xff1a;5050 那么&#xff0c;是无法在 mini-app 容器里执行以下命令&#xff0c;如果执行&#xff0c;会一直卡在这条命…

一文详解Java单元测试Junit

文章目录 概述、Junit框架快速入门单元测试概述main方法测试的问题junit单元测试框架优点&#xff1a;使用步骤&#xff1a; 使用案例包结构 Junit框架的常见注解测试 概述、Junit框架快速入门 单元测试概述 就是针对最小的功能单元&#xff08;方法&#xff09;&#xff0c;…

ROS rosbag

在ROS中的rosbag是一个命令行工具&#xff0c;主要用于记录、回放和分析rostopic中的数据。它可以将指定rostopic中的数据记录到.bag后缀的数据包中&#xff0c;以便于进行离线分析和处理。 在ROS系统中&#xff0c;rosbag可以通过命令行工具或ROS节点来使用。 通过rosbag命令…

数字图像处理(实践篇)十九 漫水填充

目录 一 漫水填充算法--FloodFill 二 涉及的函数 三 实践 一 漫水填充算法--FloodFill FloodFill漫水填充算法就是选中与种子点相连接的区域&#xff0c;利用指定颜色进行区域颜色填充。可以通过设置连通方式或像素的范围控制填充的效果。通常是用来标记或者分离图像的一部…

进程地址空间

引入地址空间 静态变量和栈空间变量 静态变量默认是被初始化的 存放在初始化和为初始化空间中 static已经变成了全局变量 命令行参数和环境变量的增长方向 这里观察的是命令行参数和环境变量的地址 观察命令行和环境变量表的地址 进程地址空间 如果他们是同一块儿空间&am…

Ubuntu22.04 交叉编译fdk-aac for Rv1106

一、下载fdk-aac git clone https://github.com/mstorsjo/fdk-aac.git 二、编译 mkdir build cd buildcmake -DCMAKE_CXX_COMPILER/opt/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-g -DCMAKE_C_COMPILER/opt/arm-rockchip830-linux-…