写两个函数,分别求两个整数的最大公约数和最小公倍数

写两个函数,分别求两个整数的最大公约数和最小公倍数

问题描述:

1.JAVA语言。

2.描述它的解题思路。

3.写出代码并注释。

 

	    Scanner scan=new Scanner(System.in);

		int m=scan.nextInt();
		int n=scan.nextInt();
		int fan = 0,x=m,y=n;
	    if(m<n) {              //始终保持m比n大,
	    	fan=m;m=n;n=fan;   
	    }
		while(m%n!=0) {        //运用辗转相除法求出最大公约数
			fan=m%n;
			m=n;
		    n=fan;
		}
		System.out.println(n);
		System.out.print(x*y/n);//x*y除以最大公约数得到最小公倍数

思路:

1.辗转相除法:

两整数m和n:
(1)比较两数大小,若m小于n,交换
(2) m%n得到余数fan
(3)若fan为0时,则n是两个数的最大公约数
(4)若fan不为0时,则m=n,n=fan,再执行(1),继续循环

import java.util.Scanner;
 
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
         
        if(m<n) {
            int temp = m;
            m = n;
            n = temp;
        }
 
        int t = gy(m,n);
        System.out.println("它们最大公约数为:" + t);
        System.out.println("它们最小公倍数为:" + m * n / t);
    }
//      求最大公约数
    private static int gy(int m, int n) {
        if(m%n == 0) return n;
        return gy(n,m%n);
    }
}
  

import java.util.Scanner;

public class Main{

 

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

int a = in.nextInt();

int b = in.nextInt();

int A=a,B=b;

        while(B!=0)

        {

        int i=A%B;

        A=B;

        B=i;

        }

        System.out.print(A);

        System.out.print(" ");

        

        int j=a>b?a:b;

        while(j>0)

        {

        if(j%a==0 && j%b==0)

        {

        System.out.print(j);

        break;

        }

        j++;

        }

        in.close();

}

}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632