题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用辗除法。
在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最小公约数,最小公倍数为两数之积除以最小公倍数。
1 package com.li.FiftyAlgorthm; 2 3 import java.util.Scanner; 4 5 /**b 6 * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。 7 * 在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回 8 * 较大的数,此数即为最小公约数,最小公倍数为两数之积除以最小公倍数。 9 * 10 * @author yejin 11 * 12 */ 13 public class CommonDiviser { 14 public static void main(String[] args) { 15 int a, b; 16 Scanner s1 = new Scanner(System.in); 17 Scanner s2 = new Scanner(System.in); 18 a = s1.nextInt(); 19 b = s2.nextInt(); 20 CommonDiviser cd = new CommonDiviser(); 21 int m = cd.division(a, b); 22 int n = a * b / m; 23 System.out.println("最大公约数: " + m); 24 System.out.println("最小公倍数: " + n); 25 } 26 27 public int division(int x, int y) { 28 int t; 29 if (x < y) { 30 t = x; 31 x = y; 32 y = t; 33 } 34 35 while (y != 0) { 36 if (x == y) 37 return 1; 38 else { 39 int k = x % y; 40 x = y; 41 y = k; 42 } 43 } 44 return x; 45 } 46 }
原文:http://www.cnblogs.com/justdoitba/p/7142687.html