当前位置: 首页 > article >正文

欧拉定理:若 gcd(a,n)=1,则 a^φ(n)≡1(mod n)。

【欧拉定理简介】
欧拉定理:
若 gcd(a,n)=1,则 a^φ(n)≡1(mod n)
(1)例如,a=3,n=10,gcd(3,10)=1,φ(10)=4,则 a^φ(n)=3^4=81,81 mod 10=1,欧拉定理成立。
(2)当 n 是质数时,φ(n)=n-1,欧拉定理退化为费马小定理 a^(n-1)≡1(mod n),其中 a 和 n 的最大公约数 gcd(a,n)=1。 例如,a=2,n=5,gcd(2,5)=1,a^(n-1)=2^4=16,16 mod 5=1,费马小定理成立。
(3)注意:费马小定理是欧拉定理的特例,在模运算中应用广泛。

【算法代码】
该代码实现了四个核心功能:
(1)计算最大公约数 (gcd);
(2)通过质因数分解计算欧拉函数 φ(n);
(3)计算快速幂;
(3)验证欧拉定理 a^φ(n)≡1 mod n 的条件和结论。

#include <bits/stdc++.h>
using namespace std;int gcd(int a, int b) {if(b==0) return a;else return gcd(b,a%b);
}int oula_phi(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 fastPow(int a,int b,int p) {int ans=1;while(b) {if(b & 1) ans=ans*a%p;a=a*a%p;b>>=1;}return ans%p;
}bool verify_euler_theorem(int a,int n) {if(gcd(a,n)!=1) return false;int phi=oula_phi(n);int ans=fastPow(a,phi,n);return ans==1;
}int main() {int a,n;cin>>a>>n; //gcd(a,n)=1if(verify_euler_theorem(a,n)) {cout<<"φ("<<n<<")="<<oula_phi(n)<<endl;cout<<a<<"^φ("<<n<<")≡1 mod "<<n<<" is true."<<endl;} else cout<<"Not meeting the conditions."<<endl;return 0;
}/*
in:
3 7out:
φ(7)=6
3^φ(7)≡1 mod 7 is true.
*/



 

http://www.lryc.cn/news/2387501.html

相关文章:

  • fvm install 下载超时 过慢 fvm常用命令、flutter常用命令
  • Python正则表达式:30秒精通文本处理
  • Introduction to SQL
  • 计算机视觉---YOLOv3
  • #RabbitMQ# 消息队列进阶
  • React从基础入门到高级实战:React 核心技术 - React Router:路由管理
  • 【深度学习】损失“三位一体”——从 Fisher 的最大似然到 Shannon 的交叉熵再到 KL 散度,并走进 PET·P-Tuning微调·知识蒸馏的实战
  • 5 分钟速通密码学!
  • Linux——IP协议
  • Lua 脚本在 Redis 中的运用-24 (使用 Lua 脚本实现原子计数器)
  • Linux信号量(32)
  • 技术视界 | 打造“有脑有身”的机器人:ABC大脑架构深度解析(上)
  • 使用堡塔和XShell
  • 软件项目交付阶段,验收报告记录了什么?有哪些标准要求?
  • LightGBM的python实现及参数优化
  • 封装渐变堆叠柱状图组件附完整代码
  • 分布式项目保证消息幂等性的常见策略
  • 山东大学软件学院创新项目实训开发日志——第十三周
  • 如何在sublime text中批量为每一行开头或者结尾添加删除指定内容
  • Cesium 透明渐变墙 解决方案
  • 网络原理与 TCP/IP 协议详解
  • day022-定时任务-故障案例与发送邮件
  • 新增 git submodule 子模块
  • List优雅分组
  • Linux 使用 Docker 安装 Milvus的两种方式
  • AR眼镜+AI视频盒子+视频监控联网平台:消防救援的智能革命
  • 编程技能:字符串函数10,strchr
  • 使用tunasync部署企业内部开源软件镜像站-Centos Stream 9
  • c/c++的opencv像素级操作二值化
  • C++----Vector的模拟实现