目录

欧拉函数

欧拉定理

拓展欧拉定理(欧拉降幂)


欧拉函数

在数论中,有正整数n,欧拉函数是小于n的正整数中与n互质的数的数目.

它的通式如下:

φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)*……*(1-1/pn)

这里的p是数字n的质因数.

故此可以得到欧拉函数的求法:

int eular(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;
}

以上是打表求法.

欧拉函数的性质(phi即为欧拉函数):

1.当m,n互质时,phi(m*n)=phi(m)*phi(n);

2.i%p==0时,phi(i*p)=p*phi(i);

3.小于N且与N互质的所有数之和为phi(N)*N/2;

4.N为质数时,phi(N)=N-1

5.phi(1)=1;

根据以上的欧拉函数的性质,我们可以将它们和欧拉筛相结合:

void get_eular()
{phi[1]=1;for(int i=2;i<=n;i++){if(vis[i]==0){p[++cnt]=i;phi[i]=i-1;}for(int j=1;j<=cnt&&i*p[j]<=n;j++){vis[i*p[j]]=1;if(i%p[j]==0){phi[p[j]*i]=p[j]*phi[i];break;} phi[p[j]*i]=(p[j]-1)*phi[i];}}
}

欧拉定理

欧拉定理其实也属于欧拉函数的一个性质(证明我以后有空再补上吧qwq,贴个百度百科的图):

定义

对任意两个正整数 a, n,如果两者互质,那么 aφ(n)≡1(mod n)

证明

 费马小定理

若存在整数a,p,a为整数,p为质数,那么a(p-1)≡ 1(mod p)

费马小定理是欧拉定理的一种特殊情况(当n为质数时φ(n)为n-1)

应用

逆元的定义:
对于a*b≡1(mod p),b是a在模m下a的逆元。(只有a与p互质时存在逆元)
应用
当p为质数时由费马小定理a^(p-1)≡ 1(mod p)得,逆元b为a^(p-2);
当p不是质数时则需使用欧拉定理,提前求出p的欧拉函数,逆元b为a^(φ(n)-1)

拓展欧拉定理(欧拉降幂)

在求解mod p时,在指数b大到我们不能用快速幂和暴力去求解时,可以考虑用欧拉降幂求解.欧拉降幂的式子是(证明先缓缓):

洛谷模板

【模板】扩展欧拉定理 - 洛谷https://www.luogu.com.cn/problem/P5091

#include<bits/stdc++.h>
#define int long long
using namespace std;
int eular(int x)
{int ans=x;for(int i=2;i*i<=x;i++){if(x%i==0){ans=ans/i*(i-1);while(x%i==0)x/=i;}}if(x>1)ans=ans/x*(x-1);return ans;
}
int ksm(int x,int y,int m)
{int res=1;while(y){if(y%2==1)res=res*x%m;y>>=1;x=x*x%m;}return res;
}
void solve()
{int a,m,eularm,numb=0;string b;cin>>a>>m>>b;eularm=eular(m);for(int i=0;i<b.size();i++){numb=numb*10+(b[i]-'0');if(numb>eularm){numb%=eularm;numb+=eularm;}       }if(numb>=eularm)numb+=eularm;cout<<ksm(a,numb,m);
}
signed main()
{solve();return 0;
}

欧拉函数+欧拉定理+拓展欧拉定理(欧拉降幂)相关推荐

  1. c语言互质欧拉函数,互质与欧拉函数学习笔记

    互质与欧拉函数学习笔记 互质 定义: ​ \(\forall a,b\in \N\) ,若 \(gcd(a,b)=1\) ,则称 \(a,b\) 互质. 积性函数 定义: ​ 如果 \(a,b\) 互 ...

  2. 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )

    整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn​)) ②求[1,n]之间每个数的质因数 ...

  3. jzoj1164-求和【欧拉函数,数论】(筛欧拉函数模板)

    正题 大意 给出一个nnn,求1∼n" role="presentation" style="position: relative;">1∼n1 ...

  4. NOI数学之提高级:欧拉定理和欧拉函数

    欧拉定理详解 欧拉定理详解_郝伟老师的博客--大数据.并行计算与人工智能时代-CSDN博客_欧拉定理 欧拉函数与欧拉定理 欧拉函数与欧拉定理_leader_one的博客-CSDN博客_欧拉定理 欧拉定 ...

  5. 欧拉函数|(扩展)欧拉定理|欧拉反演

    也许更好的阅读体验 文章目录 欧拉函数 欧拉函数常用性质 欧拉定理 扩展欧拉定理 线性筛法 欧拉反演 欧拉函数 定义 欧拉函数是 小于等于 x的数中与x 互质 的数的 数目 符号 φ ( x ) \v ...

  6. 数论讨伐!欧拉函数!

    [欧拉函数] 任务开始. 什么是欧拉函数?我们又怎么求呢??? 此次任务的主要怪物:欧拉函数 (1)欧拉函数定义 欧拉函数嘛,当然是我们著名的莱昂哈德·欧拉发明的啦~那么他是怎么定义介个函数滴? 咳咳 ...

  7. 欧拉函数和莫比乌斯反演(Mobius)

    这几天研究了之前一直困扰自己很久的莫比乌斯反演,虽然自己现在学的还不是很好,就简简单单的写一下总结吧,咦,都没学会掌握我就写总结好像很欠揍,欧拉函数现在也系统的整理一下好了 一.欧拉函数 1.定义:* ...

  8. 数论(四)——欧拉函数

    目录 欧拉函数 用公式求欧拉函数 筛法求欧拉函数 欧拉定理 欧拉函数 定义: 在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目. 注: 1.φ(1)=1 2.互质是公约数只有1 ...

  9. 数论之互质与欧拉函数

    文章开始前先给大家安利我学长以前写的数论的blog:aliayc 文章目录 互质 欧拉函数 质因数分解求欧拉函数 筛法求欧拉函数 性质 积性函数 定义 性质 题目 互质 定义 ∀ a , b ∈ N ...

最新文章

  1. 首届清华智班30人名单公布:贵校第一批AI本科生,状元金牌云集,与姚班“抢人”...
  2. js实现一键复制到剪切板上_你的“剪切板”正在被网赚者控制
  3. Redis实战之征服 Redis + Jedis + Spring (三)
  4. 【Android 插件化】Hook 插件化框架 ( 通过反射获取 “插件包“ 中的 Element[] dexElements )
  5. python3 socketserver_Python3中的SocketServer
  6. 数据库降级_阿里 双11 同款流控降级组件 Sentinel Go 正式GA,云原生服务稳稳稳...
  7. MINA2 源代码学习--源代码结构梳理
  8. IE开发者人员工具使用说明 pptx
  9. IronJS与CSScript
  10. Spring+Netty4实现的简单通信框架
  11. Java九大内置对象
  12. 2.70-写出具有如下原型的函数的代码:
  13. 基尔霍夫定律(Kirchhoff laws)
  14. Java 泛型 <? super T> <? extend T> 的通俗理解
  15. Java面试官最爱问的垃圾回收机制,mysql密码忘记
  16. java性能调优(转载)
  17. WebBowser 实现淘宝网自动登录
  18. 简要分析用MD5加密算法加密信息(如有疑问,敬请留言)
  19. 华大HC32A460 系列介绍(一)
  20. 程序员写作云笔记推荐

热门文章

  1. Go语言学习笔记—golang标准库math包
  2. PHPexcel 原生导出数据
  3. PyTorch源码浅析(1):THTensor
  4. 基于OD吸引度的城市轨道交通OD客流预测方法
  5. Laravel学习笔记汇总——Collection方法详解
  6. spss数据分析--信度效度分析
  7. vscode 设置代码格式化缩进为2个空格
  8. Java 8 入门教程 - Streams(流)
  9. i5 13500H 和 i7 1270p差多少 i513500H 和 i71270p对比
  10. JavaEE三层架构