数学(1.费马定理 2.扩展欧几里德算法 3.莫比乌斯反演)
2015-08-14 10:23
309 查看
费马小定理(Fermat Theory)是数论中的一个重要定理,其内容为: 假如p是质数,且Gcd(a,p)=1,那么 a(p-1) ≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
欧几里德算法的扩展
扩展欧几里德算法不但能计算(a,b)的最大公约数,而且能计算a模b及b模a的乘法逆元,用C语言描述如下:
000
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
欧几里德算法的扩展
扩展欧几里德算法不但能计算(a,b)的最大公约数,而且能计算a模b及b模a的乘法逆元,用C语言描述如下:
int gcd(int a,int b,int &ar,int &br) { int x1,x2,x3; int y1,y2,y3; int t1,t2,t3; if(0==a)//有一个数为0,就不存在乘法逆元 { ar=0;br=0; return b; } if(0==b) { ar=0;br=0; return a; } x1=1;x2=0;x3=a; y1=0;y2=1;y3=b; int nk; for(t3=x3%y3;t3!=0;t3=x3%y3) { k=x3/y3; t2=x2-k*y2;t1=x1-k*y1; x1=y1;x2=y2;x3=y3; y1=t1;y2=t2;y3=t3; } if(y3==1)//有乘法逆元 { ar=y2; br=x1; return 1; } else//公约数不为1,无乘法逆元 { ar=0; br=0; return y3; } }
000
相关文章推荐
- codeforces 232D Fence
- 收藏站点列表
- 【Game】protobuf:windows下环境配置
- SDN和NFV的基础,Intel如何思考
- [网络流24题] 04 魔术球问题 (有向无环图最小路径覆盖, 最大流)
- android开发(8) 选项卡的切换
- android开发(9) 渐变动画演示(Tween Animation)
- android开发(10) 逐帧动画演示(Frame Animation)
- android开发(11) 消息栏通知(Notification)
- winfrom - 重定向控制台的输入输出
- 和飞秋的通讯实现
- .net 命名管道(NamedPipe) 的使用
- android:gravity 和 android:layout_Gravity
- vs2015
- c#语法糖代码——自动属性, 匿名类型,对象与集合初始化器,扩展方法
- java工具类(六)根据经纬度计算距离
- Oracle中merge into的使用
- 初识font-face用法
- AFNetworking
- uva 1354 位运算与搜索