Java >> Java tutorial >  >> Java

Java LCM Of Array

Java LCM Of Array | I dette afsnit finder vi arrayets LCM i programmeringssproget Java. LCM repræsenterer laveste fælles multiplum.

Før vi ser LCM for et array, lad os først se, hvordan man beregner LCM for 2 tal i Java. Se også:- HCF af to numre i Java

Trin til at finde LCM af array i Java:-

Trin-1:- Tag to tal.
Trin2:- List multiplerne af to tal.
Trin3:- Find den fælles mindste multiplum, som kaldes LCM.

Formlen til at finde LCM er:- LCM(a,b) =a*b/GCD(a,b)

Hvor:-
LCM:- Laveste fælles multiplum
a, b:- To tal nødvendige for at finde LCM
GCD:- Største fælles deler

Trin til at finde GCD(a,b):-

Trin1:- Find divisoren for positivt heltal 'a'.
Trin2:- Find divisoren af ​​positivt heltal 'b'.
Trin3:- List de fælles faktorer for 'a' og 'b'.
Trin 4:- Den højeste divisor af 'a' og 'b' er GCD.

Der er to metoder til at finde LCM,
1) Ved at finde flere
2) Ved at finde GCD

Program til at finde LCM af array i Java ved at finde multipler

import java.util.Arrays;

public class Main {

   public static long lcm(int[] elements) {
      long lcm = 1;
      int divisor = 2;

      while (true) {
         int counter = 0;
         boolean divisible = false;

         for (int i = 0; i < elements.length; i++) {
            if (elements[i] == 0) {
               return 0;
            } else if (elements[i] < 0) {
               elements[i] = elements[i] * (-1);
            }

            if (elements[i] == 1) {
               counter++;
            }

            if (elements[i] % divisor == 0) {
               divisible = true;
               elements[i] = elements[i] / divisor;
            }
         }

         if (divisible) {
            lcm = lcm * divisor;
         } else {
            divisor++;
         }

         if (counter == elements.length) {
            return lcm;
         }
      }
   }

   public static void main(String[] args) {
      int[] array1 = { 21, 17, 13, 19, 41 };
      System.out.println("Array: " + Arrays.toString(array1));
      System.out.println("LCM = " + lcm(array1));

      int[] array2 = { 9, 18, 27, 36, 54 };
      System.out.println("Array: " + Arrays.toString(array2));
      System.out.println("LCM = " + lcm(array2));
   }
}

Output:-

Matrix:[21, 17, 13, 19, 41]
LCM =3615339
Matrix:[9, 18, 27, 36, 54]
LCM =108

Java LCM Of Array ved hjælp af rekursion og GCD

import java.util.Arrays;

public class Main {

   public static int gcd(int num1, int num2) {
      return num2 == 0 ? num1 : gcd(num2, num1 % num2);
   }

   public static int lcm(int[] array, int index) {
      if (index == array.length - 1) {
         return array[index];
      }
      int a = array[index];
      int b = lcm(array, index + 1);
      return (a * b / gcd(a, b));
   }

   public static void main(String[] args) {
      int[] array1 = { 21, 17, 13, 19, 41 };
      System.out.println("Array: " + Arrays.toString(array1));
      System.out.println("LCM = " + lcm(array1, 0));

      int[] array2 = { 9, 18, 27, 36, 54 };
      System.out.println("Array: " + Arrays.toString(array2));
      System.out.println("LCM = " + lcm(array2, 0));
   }
}

Output:-

Matrix:[21, 17, 13, 19, 41]
LCM =3615339
Matrix:[9, 18, 27, 36, 54]
LCM =108

I ovenstående program har vi brugt rekursionsteknikken til at finde LCM af array i Java. I hovedmetoden har vi brugt Arrays.toString()-metoden i Java Arrays-klassen til at vise arrayet.


Java tag