题目:输入两个正整数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 }
最能让人感到快乐的事,莫过于经过一番努力后,所有东西正慢慢变成你想要的样子!
分类:
java经典问题算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决