输入两个正整数m和n,求其最大公约数和最小公倍数详解编程语言

题目:输入两个正整数mn,求其最大公约数和最小公倍数。

程序分析:利用辗除法。

在循环中,只要除数不等于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 }

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/11342.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论