最多约数问题

来源:互联网 发布:淘宝潘多拉代购真的吗 编辑:程序博客网 时间:2024/06/05 06:26

描述

存在n个整数 , 请找出n个整数中约数最多的数,若有多个数约数个数相同,则找出这些具有相同约数的数中最小的整数。

输入

输入数据包含多组数据(文件EOF结束)
每组数据包含两行 第一行为n 表示有n个数(1<=n<=200) 第二行是n个以空格分隔的整数。

输出

对于输入请输出约数最多的数

样例输入

6
2 1 5 4 3 9

样例输出

4
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<string.h>int a[205],b[205];using namespace std;int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        memset(a,0,sizeof(a));        memset(a,0,sizeof(b));        int max=-1000;        for(int i=0; i<n; i++)            cin>>a[i];        int num=0,k;        sort(a,a+n);        for(int i=0; i<n; i++)        {            for(int j=1; j<=a[i]; j++)            {                if(a[i]%j==0)                {                    b[i]++;                }            }           // printf("%d   ",b[i]);        }        for(int i=0; i<n; i++)        {            if(b[i]>max)            {                max=b[i];                k=i;            }        }        printf("%d\n",a[k]);        memset(a,0,sizeof(a));        memset(a,0,sizeof(b));    }    return 0;}