求两个数的最大公约数

来源:互联网 发布:数据分析培训 编辑:程序博客网 时间:2024/06/05 00:58

求两个数的最大公约数

一.辗转相除法

    辗转相除法,又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至公元前300年前。

    那么原理是什么?

    即:较大的数与较小的树进行取模运算,得到a;然后让较小的数在与a进行取模运算,得到b;.......n(即每次让较小的数与n取模)。直至n为0时,这时较小的数就是最大公约数,停止运算。

    举例说明

 

    程序实现

public class gongyue{private int yueshu=1;private int gcd(int a,int b){if(a%b==0)return b;elsereturn gcd(b,a%b);}public int maincode(int a,int b){if(a>b)yueshu=gcd(a,b);elseyueshu=gcd(b,a);System.out.println(yueshu);return 0;}public static void main(String[] args) {gongyue tgcd=new gongyue();tgcd.maincode(240,80);}}

二、方法2(三元表达式-and-for循环)

public class gongyue{/*@param args*/      public static void main(String[] args) {         int a = 1112;         int b = 208;         int e = 546800;         int f = 256400;         int c = 1;          int min = (a < b ? a : b);         int min2 = (e < f ? e : f);          for(int i = 1; i <= min; i++){ if(a % i == 0 && b % i == 0) c = i;         }         System.out.println(c);          for(int i = min2; i >= 1; i--){ if(e % i == 0 && f % i == 0){ c = i;                 break;             }         }         System.out.println(c);     } }


0 0
原创粉丝点击