java求最大公约数和最小公倍数

来源:互联网 发布:淘宝天天特价衣服 编辑:程序博客网 时间:2024/06/05 16:04

其实就是反复利用乘2和除以2来获得最终的结果,

 求最大公约数

代码如下:

public class ZuiDaGongYueShu {public static int gcd(int a, int b){int m,n,r;if (a > b){m = a;n = b;} else{m = b;n = a;}if (n == 0) {return m;}if (m%2 == 0 && n % 2 == 0){return 2*gcd(m/2,n/2);}if (m%2== 0){return gcd(m/2,n);}if(n % 2 == 0){return gcd(m,n/2);}return gcd((m+n)/2,(m - n)/2);}public static void main(String[] args) {int a , b ,r;Scanner sc = new Scanner(System.in);System.out.println("输入第一个值:");a = sc.nextInt();System.out.println("输入第二个值:");b = sc.nextInt();r = gcd(a,b);System.out.println(r);}
求最小公倍数其实

代码如下:

public class ZuiXiaoGongYueShu {public static int gcd(int a, int b){int m,n,r;if (a > b){m = a;n = b;} else{m = b;n = a;}if (n == 0) {return m;}if (m%2 == 0 && n % 2 == 0){return 2*gcd(m/2,n/2);}if (m%2== 0){return gcd(m/2,n);}if(n % 2 == 0){return gcd(m,n/2);}return gcd((m+n)/2,(m - n)/2);}public static int lem(int a,int b){int c,d;c = gcd(a,b);d = (a*b)/c;return d;}public static void main(String[] args) {int a , b ,r;Scanner sc = new Scanner(System.in);System.out.println("输入第一个值:");a = sc.nextInt();System.out.println("输入第二个值:");b = sc.nextInt();r = lem(a,b);System.out.println(r);}}