zoukankan      html  css  js  c++  java
  • (转)求最大公约数和最小公倍数

        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;
            }
    



  • 相关阅读:
    手写Linq To Object
    4、IOC--内置Unity容器的使用
    WebApi 基于JWT实现Token签名认证
    软件架构师之路--观察者模式
    EF--封装三层架构IOC
    EF--主外键关系导航属性
    EF--EntityState相互转换
    证明task线程是来源于线程池的,线程重用
    3、IOC--手写Unity容器--链式依赖--第N层依赖注入
    2、IOC--手写Unity容器--第一层依赖注入
  • 原文地址:https://www.cnblogs.com/lixuwu/p/5676114.html
Copyright © 2011-2022 走看看