简单题,来。

来源:百度知道 编辑:UC知道 时间:2024/09/23 07:09:29
最多约数问题

Time Limit:1000MS Memory Limit:65536K
Total Submit:46 Accepted:26

Description

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

Input

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

Output

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

Sample Input

6
2 1 5 4 3 9

Sample Output

4

#include<stdio.h>
#include<malloc.h>
void main()
{
int n;
printf("input the n:\n");
scanf("%d",&n);
int *a=(int*)malloc(n*sizeof(int));
int *b=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
{
b[i]=NULL;
a[i]=NULL;
}
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
int temp;
temp=a[i];
for(int j=1;j<=a[i];j++)
{
if(a[i]%j==0)
b[i]++;
}
}
int max=-32767;
for(i=0;i<n;i++)
{
if(max<b[i])
max=b[i];
}
int min=32767,count=0;
for(i=0;i<n;i++)
{
if(max==b[i])
{
count++;
if(count>=1)
min=min>a[i]?a[i]:min;
}
}
printf("%d\n",min);

}