java例题_06 最大公约数&最小公倍数

 1 /*6 【程序 6 求最大公约数及最小公倍数】 
 2 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 
 3 程序分析:利用辗除法。 
 4 */
 5 
 6 /*分析
 7  * =============================
 8  * 辗转相除法求【最大公约数】:
 9  * 如我们计算10和25的最大公约数。用辗转相除法是这么计算的:
10  * 25÷10=2······5
11  * 10÷5=2······0
12  * 那么25和10的最大公约数就是5。
13  * ==============================
14  * 转换过来就是,求m和n的最大公约数,m%n==a,n%a==0,则m和n的最大公约数是a
15  *
16  * 【最小公倍数】=m*n/a(即:两个数相乘再除以其最大公约数)
17  * 
18  * 综上,此题需要先利用辗转相除法求出最大公约数,再利用性质求出最小公倍数
19  * 
20  * */
21 
22 package homework;
23 
24 import java.util.Scanner;
25 
26 public class _06 {
27 
28     public static void main(String[] args) {
29         System.out.println("请输入两个正整数m,n:");
30         //从键盘获得m,n两个整数
31         Scanner sc=new Scanner(System.in);
32         int m=sc.nextInt();
33         int n=sc.nextInt();
34 //        System.out.println(m+" "+n);
35         int x=m,y=n;
36         //利用for循环来控制计算的步骤
37         for (int a=x; a>0; ) {
38             a=x%y;
39             x=y;
40             y=a;
41         }    
42         System.out.println(m+","+n+"的最大公约数为:"+x+"\n"+m+","+n+"的最小公倍数为:"+m*n/x);
43 
44     }
45 
46 }

 

posted @ 2020-02-11 11:04  浪漫主义程序员  阅读(180)  评论(0编辑  收藏  举报