首页 > 试题广场 >

最大公约数1

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

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


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

输入

3
4 8 6

输出

4 8 4
#include<stdio.h>
int findmax(int a[],int n){
    int i,max;
    max=a[0];
    for(i=1;i<n;i++)
        if(max<a[i])
            max=a[i];
    return max;
}
int findmin(int a[],int n){
    int i,min;
    min=a[0];
    for(i=1;i<n;i++)
        if(min>a[i])
            min=a[i];
    return min;
}
int findmaxnum(int a,int b){
    int c;
    while(a%b!=0){
        c=a;
        a=b;
        b=c%b;
    }
    return b;
}
int main(){
    int n,i,min,max,maxnum;
    int a[100000];
    while(scanf("%d",&n)!=EOF){
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        min=findmin(a,n);
        max=findmax(a,n);
        maxnum=findmaxnum(max,min);
        printf("%d %d %d\n",min,max,maxnum);
    }
}

发表于 2022-02-17 16:19:57 回复(0)