黑马程序员技术交流社区

标题: 练习四:最大公约数和最小公倍数 [打印本页]

作者: maxwell247    时间: 2015-9-21 17:04
标题: 练习四:最大公约数和最小公倍数

从网上找到一份编程练习题,我决定将里面的题目全都做一遍。

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

/*
        分析:最大公约数--> 欧几里德算法(辗转相除法)
        算法过程-->两个正整数 a 和 b 的最大公约数:
        1.  a ÷ b,令r为所得余数(0≤r<b)
                若 r = 0,算法结束;b 即为答案。
        2.  互换:置 a←b,b←r,并返回第一步。
*/
import java.util.Scanner;

class  NumberDemo{

        public static void main(String[] args) {
                System.out.println("请输入两个正整数:");
                Scanner scanner=new Scanner(System.in);
                int a=scanner.nextInt();
                int b=scanner.nextInt();
                int c=gcd(a,b); //c为最大公约数
                System.out.println(a+"和"+b+"的最大公约数为:"+c+"   最小公倍数为:"+ a*b/c);
        }
       
        /*
                求最大公约数
                @param m,n 输入的两个数
                @return m和n的最大公约数,如果返回-1表示输入数据错误
        */
        public static int gcd(int m,int n){
                if (m<0 || n<0){
                        System.out.println("输入数据错误!");
                        return -1;
                }
                if (m%n==0){
                        return n;
                }
                return gcd(n,m%n);
        }
}


作者: 阿秋    时间: 2015-9-27 12:10
辗转相除法学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2