扩展欧几里得算法(求最大公约数与逆)
来源:互联网 发布:网络主播协议 编辑:程序博客网 时间:2024/05/16 17:05
#include <iostream>class GCD{ public: long long a1,a2; long long Gcd; long long u,v; // Gcd=this->gcd(a1,a2); public: /*long gcd(long a1,long a2){ if(a2==0){ return a1; } else{ return gcd(a2,a1%a2); } }*/ GCD(long long i,long long j){ a1=i>=j?i:j; a2=i+j-a1;; } void Euclid_extend(){ long long U_temp[100],V_temp[100]; long long b[100]; int i; b[0]=(a1>=a2?a1:a2); b[1]=a1+a2-b[0]; U_temp[0]=0; V_temp[0]=1; U_temp[1]=1; if(b[1]==0){ u=1; v=0; Gcd=u*b[0]+v*b[1]; return; } V_temp[1]=-(b[0]/b[1]); if(b[0]%b[1]==0){ u=0; v=1; Gcd=u*b[0]+v*b[1]; return; } else{ b[2]=b[0]%b[1]; i=1; if(b[1]%b[2]==0){ u=1; v=V_temp[1]; Gcd=u*b[0]+v*b[1]; return; } else{ Euclid_extend_compute(U_temp,V_temp,i,b); u=U_temp[i]; v=V_temp[i]; Gcd=u*b[0]+v*b[1]; return; } } } void Euclid_extend_compute(long long U_temp[],long long V_temp[], int &i,long long b[]){ long long q; q=b[i]/b[i+1]; b[i+2]=b[i]%b[i+1]; if(b[i+2]==0){ return; } else{ U_temp[i+1]=U_temp[i-1]-q*U_temp[i]; V_temp[i+1]=V_temp[i-1]-q*V_temp[i]; i++; Euclid_extend_compute( U_temp, V_temp, i, b); return; } }};using namespace std;int main(){ long long i,j; cin>>i>>j; GCD gcd_compute(i,j); //gcd_compute.Gcd=gcd_compute.gcd(i,j); //cout<<gcd_compute.gcd(i,j)<<endl; //cout<<i/161<< ' '<<j/161<<endl; gcd_compute.Euclid_extend(); cout<<gcd_compute.Gcd<<' '<<gcd_compute.u<<' '<<gcd_compute.a1<<' '<<gcd_compute.v<<' '<<gcd_compute.a2<<endl; //cout<<(long long)16534528044*(-518146091)+(long long)8332745927*648263<<endl; return 0;}
0 0
- 扩展欧几里得算法(求最大公约数与逆)
- 扩展欧几里得算法(两行代码求最大公约数)
- 求最大公约数(欧几里得算法)
- 求最大公约数(欧几里得算法)
- 欧几里得算法(求最大公约数)
- 扩展欧几里得(Extended Euclid)算法求最大公约数和乘法逆元
- 扩展欧几里得算法(最大公约数及逆元)算法
- 欧几里得算法求最大公约数
- 欧几里得算法求最大公约数
- 欧几里得算法 求最大公约数
- noip2009 hankson的趣味题 (扩展欧几里得求最大公约数,最小公倍数与最大公约数)
- 扩展的欧几里得算法求最大公约数的C/C++ 实现
- 欧几里得算法求最大公约数(九度刷题)
- HDOJ 最小公倍数(欧几里得算法求最大公约数)
- 数据结构--求最大公约数(欧几里得算法)
- 一行代码求最大公约数(欧几里得算法)
- 欧几里得算法与最大公约数
- 用欧几里得算法求最大公约数
- Java中相对路径,绝对路径问题总结
- js浏览器兼容问题总结及解决办法
- hibernate5--2.数据持久化及事务
- Junit单元测试+断点调试
- linux下查看所有用户及所有用户组
- 扩展欧几里得算法(求最大公约数与逆)
- 听说最近你读过不少书
- hadoop WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usin
- 格子中输出
- TCP/IP五
- 文章标题
- Search a 2D Matrix II(搜索一个二维矩阵)
- list中的数进行分组
- 如何删除GIT中的.DS_Store