用Java语言求证 辗转相除法

来源:互联网 发布:淘宝店招图片尺寸 编辑:程序博客网 时间:2024/04/26 00:10

辗转相除法


辗转相除法,是求两个正整数之最大公约数的算法。

算法思路:
设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:
1、用a除以b,得a÷b=q,余数r1(0≤r1)。
若r1=0,则(a,b)=b;
若r1不等于0,则再用b除以r1,得b÷r1=q,余数r2 (0≤r2).
若r2=0,则(a,b)=r1,
若r2不等于0,则继续用r1除以r2,
如此下去,直到能整除为止,其最后一个为被除数的余数的除数即为(a, b)。

public class YueShu {    public static void main(String[] args) {          int gcd = gcd(92, 115);          System.out.println(gcd);      }      /**      * greatest commond divisor      * 辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数     * @param a      * @param b      * @return      */      public static int gcd(int a, int b) {          while(b != 0) {              int temp = a%b;  //temp是余数            a = b;     //将b赋值给a            b = temp;  //将余数赋值给b        }          return a;      }  }
0 0