欧拉函数/欧拉定理/扩展欧拉定理

欧拉定理:

若a与m互质,那么a^phi(m) 与 1 在模m的意义下 同余

其中phi(m)为欧拉函数;
表达式phi(m)=m*(求和)((pi-1)/pi)(pi为m的因数)

扩展欧拉定理:

用于降幂
当b<phi(m)时 ,a^b 与 a^b 在 模m意义下 同余
当b>=phi(m)时,a^b 与 a^(b mod phi(m) + phi(m)) 在 模m意义下 同余
(b的处理用秦九韶公式)

getphi方法求m的欧拉函数
复杂度O(sqrt(m))

int getphi(int m){
	int res=m;
	for(int i=2;i*i<=m;i++){
		if(m%i==0){
			res=res*(i-1)/i;
			while(m%i==0)m/=i;
		}
	}
	if(m>1){
		res=res*(m-1)/m;
	}
	return res;
}

扩展欧拉定理降幂
复杂度O(b)

int depow(int phi){
	int res=0;
	bool f=false;
	for(int i=0;b[i];i++){
		res=res*10+(b[i]-'0');
		if(res>=phi){
			f=true;
			res%=phi;
		}
	}
	if(f)res+=phi;
	return res;
}
posted @   Marinaco  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示