首页 > 试题广场 >

最大公约数1

[编程题]最大公约数1
  • 热度指数:9062 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
读入n个正整数,求出这n个数的最小值、最大值以及它们两的最大公约数,并输出。输入中第一行为n,接下来为n个大于零的整数。

输入描述:
第一行为n。第二行是n个大于零的整数,用空格隔开。


输出描述:
分别输出最小值、最大值和它们两的最大公约数,用空格隔开。
示例1

输入

3
4 8 6

输出

4 8 4
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int n = in.nextInt();
            int a[] = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = in.nextInt();
            }
            Arrays.sort(a);
            int min = a[0];
            int max = a[n - 1];
            int maxGYNum = getMaxGYNum(min, max);
            System.out.println(min + " " + max + " " + maxGYNum);
        }
    }
    public static int getMaxGYNum(int a, int b) {
        while (b != 0) {
            int t = a % b;
            a = b;
            b = t;
        }
        return a;
    }
//也可以使用下面的方法来求最大公约数
 public static int getMaxGYNum(int a, int b) {
       while(a!=b){
        if(a>b){
            a = a-b;
        }
        if(b>a){
            b = b-a;
        }
       }
        return a;
    }
}

编辑于 2023-03-13 16:10:58 回复(0)

问题信息

上传者:小小
难度:
1条回答 5085浏览

热门推荐

通过挑战的用户

查看代码
最大公约数1