zoukankan      html  css  js  c++  java
  • 求N个数的最大公倍数

    思路:根据辗转相除法。先求出前两个数n1与n2的最大公约数,再根据公式最小公倍数=n1*n2/最大公约数,然后最小公倍数继续与第三个数进行求最小公倍数。

    在数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法。

    两个数求最大公约数,可以用辗转相除法。始终用较大数(被除数)除以较小数(除数),然后用除数代替较大数(被除数),余数代替较小数(除数),代替完后继续让新的被除数除以除数。直到相除余数为0时。最后的除数就是最大公约数。举例:
    222 407求最大公约数:
    222 407(407除以222余数185)
    222 185(222除以185余数37)
    37 185(185除以37余数0)
    所以最大公约数为37
    39 24求最大公约数
    39 24(39/24,余数15)
    15 24(24/15,余数9)
    15 9(15/9,余数6)
    6 9(9/6,余数3)
    6 3(6/3,余数0)
    所以最大公约数为3

    辗转相除法可以用来计算两个自然数的最大公约数,那若要计算多个自然数的最大公约数呢?

    答:求几个自然数的最大公约数,可以先求出其中两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个为止。最后所得的那个最大公约数,就是所求的几个数的最大公约数。 (求多个数的最小公倍数时也是同样的道理

     1 import java.util.Scanner;
     2 
     3 public class Main {
     4     // 求两个最大公约数
     5     public static long commonDivisor(long n, long m) {
     6         // 辗转相除是用大的除以小的。如果n<m,第一次相当n与m值交换
     7         while (n % m != 0) {
     8             long temp = n % m;
     9             n = m;
    10             m = temp;
    11         }
    12         return m;
    13     }
    14 
    15     // 求两个数最小公倍数
    16     public static long commonMultiple(long n, long m) {
    17         return n * m / commonDivisor(n, m);
    18     }
    19 
    20     // 求多个数的最小公倍数
    21     public static long commonMultiple(long[] a) {
    22         long value = a[0];
    23         for (int i = 1; i < a.length; i++) {
    24             value = commonMultiple(value, a[i]);
    25         }
    26         return value;
    27     }
    28 
    29     public static void main(String[] args) {
    30         Scanner sc = new Scanner(System.in);
    31         while (sc.hasNext()) {
    32             int n = sc.nextInt();
    33             long[] a = new long[n];
    34             for (int i = 0; i < a.length; i++) {
    35                 a[i] = sc.nextLong();
    36             }
    37             System.out.println(commonMultiple(a));
    38         }
    39     }
    40 }
  • 相关阅读:
    随堂练习
    随堂练习
    第六次安卓作业
    第五次安卓
    第四次安卓
    第二次安卓
    安卓作业
    第十八次上机
    第七周作业
    第六周作业
  • 原文地址:https://www.cnblogs.com/crazybuddy/p/5374311.html
Copyright © 2011-2022 走看看