开发者社区> 余二五> 正文

JAVA面试算法题4

简介:
+关注继续查看

题目:

输入两个正整数m和n (m>n),求其最大公约数和最小公倍数


代码:

这题目用小学里面学过的”辗转相除法“就可以求最大公约数了,而最小公倍数则是2个数乘积除以最大公约数。适当考虑下2个数大小就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.charles.algo;
/**
 * @author charles.wang
 * 题目:输入两个正整数m和n (m>n),求其最大公约数和最小公倍数
 */
public class GongYueShuGongBeiShu {
       
    private GongYueShuGongBeiShu(){}
       
       
    /**
     * 用辗转相除法来计算最大公约数
     */
    public static int maxGongYue(int m, int n){
           
        //确保m>=n 才可以做除法运算,否则交换2个数
        int temp;
        if(m<n){
            temp= n;
            n=m;
            m=temp;
        }
           
           
        //计算余数,它会小于n
        int remain = m % n;
           
        //如果整除了,那么除数就是最大公约数
        if(remain==0)
            return n;
           
        //否则,递归调用
        return maxGongYue( n,remain);
           
    }
       
    /**
     * 最小公倍数的值为二个数的乘积除以最大公约数
     */
    public static int minGongBei(int m,int n){
        return m*n/maxGongYue(m,n);
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
           
           
        int m = 12;
        int n = 18;
           
        System.out.println("输入数为:"+m+ " ,"+n);
        System.out.println("最大公约数为:"+maxGongYue(m,n));
        System.out.println("最小公倍数为:"+minGongBei(m,n));
    }
}




本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1345651,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java常用算法原理剖析
用Java实现的所有算法(用于教育) 这些只是为了演示的目的。在Java标准库中有许多不同类型的实现,由于性能原因这些要好得多。
868 0
八大排序算法Java实现分析
选择排序(selection sort) 每次找一个最小值。具体实现为每次在未排序数据中找到一个最值,并加到以排序数据首部或尾部。
1156 0
Java 算法竞赛(蓝桥杯)常用API
Java 算法竞赛(蓝桥杯)常用API
94 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19029 0
面试 | Java 算法的 ACM 模式
经常在 LeetCode 上用核心代码模式刷题的小伙伴突然用 ACM 模式可能会适应不过来,把时间花在输入输出上很浪费时间,因此本篇笔记对 Java 算法的 ACM 模式做了个小总结;
78 0
归并排序 (分而治之算法) java代码实现(java完整代码)java递归实现(分而治之)MergeSort(分治法)
归并排序 (分而治之算法) java代码实现(java完整代码)java递归实现(分而治之)MergeSort(分治法)
18 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
23895 0
AES加密算法的JAVA实现
最近公司需要,看了看AES对称加密算法,具体原理没有仔细研究还,先说说用法吧,由于能力有限,不足之处请大家多多指教,好了,不说废话了,直接上代码 /** * 加密 * * @param content 需要加密...
785 0
[转载]Java数组扩容算法及Java对它的应用
原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理   1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。
881 0
+关注
20381
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载