📌  相关文章
📜  Java程序通过GCD操作使所有数组元素等于1(1)

📅  最后修改于: 2023-12-03 15:32:05.720000             🧑  作者: Mango

Java程序通过GCD操作使所有数组元素等于1介绍

在Java编程中,我们可能需要通过GCD操作来实现将一个数组中所有的元素变成1的需求。这可以通过以下步骤来实现:

  1. 首先,使用Scanner类获取用户输入的数组元素,并存放在一个数组中。

  2. 然后,使用java.util.Arrays.stream()方法将数组转换为流,再使用reduce()方法来获得数组元素的最大公约数。

  3. 接着,使用Arrays.stream()方法将数组元素转换为流,并使用map()方法将每个元素除以最大公约数,以获得最简分数。

  4. 最后,使用reduce()方法将所有元素乘积,以获得最终结果。

下面是Java代码片段,实现上述步骤:

import java.util.*;

public class GCD {

  public static void main(String[] args) {
    
    // 1. 使用Scanner类获取用户输入的数组元素,并存放在一个数组中
    Scanner in = new Scanner(System.in);
    System.out.print("请输入数组元素,以空格分隔:");
    int[] arr = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

    // 2. 使用java.util.Arrays.stream()方法将数组转换为流,再使用reduce()方法来获得数组元素的最大公约数
    int gcd = Arrays.stream(arr).reduce(GCD::gcd).getAsInt();

    // 3. 使用Arrays.stream()方法将数组元素转换为流,并使用map()方法将每个元素除以最大公约数,以获得最简分数
    int[] simplifiedArr = Arrays.stream(arr).map(e -> e / gcd).toArray();

    // 4. 使用reduce()方法将所有元素乘积,以获得最终结果
    int result = Arrays.stream(simplifiedArr).reduce(1, (a, b) -> a * b);

    System.out.println("使数组元素等于1需要乘以的数是:" + result);
  }

  // 计算两个数的最大公约数
  public static int gcd(int a, int b) {
    if (b == 0) {
      return a;
    }
    return gcd(b, a % b);
  }

}

返回的markdown格式如下:

Java程序通过GCD操作使所有数组元素等于1介绍

在Java编程中,我们可能需要通过GCD操作来实现将一个数组中所有的元素变成1的需求。这可以通过以下步骤来实现:

  1. 首先,使用Scanner类获取用户输入的数组元素,并存放在一个数组中。

  2. 然后,使用java.util.Arrays.stream()方法将数组转换为流,再使用reduce()方法来获得数组元素的最大公约数。

  3. 接着,使用Arrays.stream()方法将数组元素转换为流,并使用map()方法将每个元素除以最大公约数,以获得最简分数。

  4. 最后,使用reduce()方法将所有元素乘积,以获得最终结果。

下面是Java代码片段,实现上述步骤:

import java.util.*;

public class GCD {

  public static void main(String[] args) {
    
    // 1. 使用Scanner类获取用户输入的数组元素,并存放在一个数组中
    Scanner in = new Scanner(System.in);
    System.out.print("请输入数组元素,以空格分隔:");
    int[] arr = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

    // 2. 使用java.util.Arrays.stream()方法将数组转换为流,再使用reduce()方法来获得数组元素的最大公约数
    int gcd = Arrays.stream(arr).reduce(GCD::gcd).getAsInt();

    // 3. 使用Arrays.stream()方法将数组元素转换为流,并使用map()方法将每个元素除以最大公约数,以获得最简分数
    int[] simplifiedArr = Arrays.stream(arr).map(e -> e / gcd).toArray();

    // 4. 使用reduce()方法将所有元素乘积,以获得最终结果
    int result = Arrays.stream(simplifiedArr).reduce(1, (a, b) -> a * b);

    System.out.println("使数组元素等于1需要乘以的数是:" + result);
  }

  // 计算两个数的最大公约数
  public static int gcd(int a, int b) {
    if (b == 0) {
      return a;
    }
    return gcd(b, a % b);
  }

}