用辗转相除法和更相减损法求最大公约数和最小公倍数
代码如下: 辗转相除法:
class divisionAlgorithm { int f = 0; //最小公约数 int m = 0; //最大公倍数 public void printFM(){ //辗转相除法得到最大公约数和最小公倍数 Scanner sc = new Scanner(System.in); int dividend = sc.nextInt(); int divisor = sc.nextInt(); m = dividend*divisor; if(dividend<divisor) { int t = divisor; divisor = dividend; dividend = t; } while(dividend%divisor != 0) { int temp = divisor; divisor = dividend%divisor; dividend = temp; } f = divisor; m = m / f; System.out.println("最大公约数为:"+f); System.out.println("最小公倍数为:"+m); } }更相减损法:
class subtraction { public void printFM(){ //更相减损法 int f=0; Scanner sc = new Scanner(System.in); int subtrahend=sc.nextInt(); int subtractor = sc.nextInt(); int m=subtrahend*subtractor; while(subtrahend != subtractor) { if(subtrahend>subtractor) { subtrahend = subtrahend-subtractor; } else{ int t = subtrahend; subtrahend = subtractor; subtractor = t; } } f=subtrahend; m=m/f; System.out.println("最大公约数为:"+f); System.out.println("最小公倍数为:"+m); } }主类:
public class FM { public static void main(String[] args) { divisionAlgorithm da = new divisionAlgorithm(); // da.printFM(); subtraction su = new subtraction(); su.printFM(); } }