以上就是题目
明明只是求最小公倍数,我却转了个大弯儿。
话不多说先贴上代码
#include<stdio.h>
#include<string.h>
int arr_max(int arr[], int n)
{
int i, max = 0;
for(i = 0; i < n; i++)
{
if(max < arr[i])
{
max = arr[i];
}
}
return max;
}
int min_gongbeishu(int arr[], int n, int in_max)
{
int i;
for(i = in_max; ; i++)
{
int j;
int count = 0;//统计 big 是 arr[] 的倍数的个数
for(j = 0; j < n; j++)
{
if(i % arr[j] == 0)
{
count++;
}
}
if(count == n)
{
return i;
}
}
}
int main()
{
int a[3];//每组人数
int i;
for(i = 0; i < 3; i++)
scanf("%d", &a[i]);
int in_max = arr_max(a, 3);
//求最小公倍数
int ans = min_gongbeishu(a, 3, in_max);
printf("%d\n", ans);
return 0;
}
补充一种 int arr_max(int arr[], int n) 的写法
int arr_max(int *arr, int n)
{
int max = 0;
for(int i = 0; i < n; i++)
{
if(max < *(arr + i))
{
max = *(arr);
}
}
return max;
}
最大公约数
int gcd(int a, int b)
{
if(a % b)
{
gcd(b, a % b);
} else {
return b;
}
}
最小公倍数
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}