• (转)求最大公约数和最小公倍数


        import java.util.*;  
          
        /*求最大公约数和最小公倍数*/  
        public class MaxCommonDivisorAndMinCommonMultiple {  
          
            public static void main(String[] args) {  
                Scanner scan = new Scanner(System.in);// 接收控制台输入的信息  
          
                System.out.print("请输入第一个整数:");  
                int num1 = scan.nextInt(); // 取出控制台输入的信息  
          
                System.out.print("请输入第二个整数:");  
                int num2 = scan.nextInt(); // 取出控制台输入的信息  
          
                System.out.println(maxCommonDivisor(num1, num2));// 调用maxCommonDivisor()方法  
                System.out.println(minCommonMultiple(num1, num2));// 调用minCommonMultiple()方法  
            }  
          
            // 递归法求最大公约数  
            public static int maxCommonDivisor(int m, int n) {  
                if (m < n) {// 保证m>n,若m<n,则进行数据交换  
                    int temp = m;  
                    m = n;  
                    n = temp;  
                }  
                if (m % n == 0) {// 若余数为0,返回最大公约数  
                    return n;  
                } else { // 否则,进行递归,把n赋给m,把余数赋给n  
                    return maxCommonDivisor(n, m % n);  
                }  
            }  
          
            // 循环法求最大公约数  
            public static int maxCommonDivisor2(int m, int n) {  
          
                if (m < n) {// 保证m>n,若m<n,则进行数据交换  
                    int temp = m;  
                    m = n;  
                    n = temp;  
                }  
                while (m % n != 0) {// 在余数不能为0时,进行循环  
                    int temp = m % n;  
                    m = n;  
                    n = temp;  
                }  
                return n;// 返回最大公约数  
            }  
          
            // 求最小公倍数  
            public static int minCommonMultiple(int m, int n) {  
                return m * n / maxCommonDivisor(m, n);  
            }  
        }  

    首先讲一个什么是公约数,这个问题我们小学都学过,可能有一部分人已经忘记了,所以还是讲一下,假设有两个数a,b,所谓的公约数就是能把a,b整除的最大整数。

    明白了要求我们就来解决问题,一拿到问题我们都应该都能想到一个方法,就是使用穷举法,从2开始一个个找,到一个两个都能除的就记录起来,一直找到小于min(a,b)结束,

    记录到的值就是他们的最大公约数代码由下:

    //3找出最大公约数,穷举法
            public static int getMaxDivide_ab(int a,int b){
                    int value=1;
                    int max;
                    int min;
                    if(a==b){
                            return a;
                    }
                    if(a>b){
                            max=a;
                            min=b;
                    }else{
                            max=b;
                            min=a;
                    }
                    for(int i=2;i<min;i++){
                            if(0==max%i && 0==min%i){
                                    value=i;
                            }
                    }
                    return value;
            }
    



  • 相关阅读:
    初级模拟电路:4-9 级联系统
    初级模拟电路:4-8 集电极反馈电路(交流分析)
    初级模拟电路:4-7 共集放大电路(交流分析)
    初级模拟电路:4-6 共射放大电路(交流分析)
    初级模拟电路:4-5 共基放大电路(交流分析)
    初级模拟电路:4-4 re模型详解
    Python语法速查: 15. 解释器与执行环境
    图解Python网络编程
    Python 安装 virturalenv 虚拟环境
    【独孤九剑】运维技术浅谈
  • 原文地址:https://www.cnblogs.com/lixuwu/p/5676114.html
Copyright © 2020-2023  润新知