不仅能求出两个正整数m和n的最大公因数d,还能求出两个整数x和y(不一定为正)使得mx+ny=d
这个其实挺简单的步骤如下:
最后得
x=x0+b*t
y=y0- a*t
GCF gcf = new GCF(); public String findResult(int a,int b){ int g = gcf.FindGCF(a,b); int k1,k2; k1=a/g; k2=b/g; return "y=(1 - "+k1+"x) / "+k2; }
public class GCF { /** * @Mehtods:递归方法实现找最大公因数 * */ public int reFindGCD(int a,int b){ if(b==0){ return a; }else{ return reFindGCD(b,a%b); } } /** * @Methods:非递归找最大公因数,辗转相除法 * */ public int FindGCF(int a,int b){ int min=Math.min(a,b); int max=Math.max(a,b); while(max%min!=0){ int temp=max%min; max=min; min=temp; } return min; } /** * @Methods:找最小公倍数,辗转相除法 * */ public int FindLCM(int a,int b){ int gcf=FindGCF(a,b); int k=1; while((gcf*k)%a!=0||(gcf*k)%b!=0){ k++; } return gcf*k; } }