定义一个函数,求两个正整数的最小公倍数。然后,利用该函数编写一个程序,从键盘输入读取5个正整数,求出它们的最小公倍数。
先求最大公约数,辗转相除法
#include <stdio.h>
int func(int m,int n)
{
int t,s = m*n;
if(m<n)
{
int t = m;
m = n;
n = t;
}
while (t = m % n)
{
m = n;
n = t;
}
return s/n;
}
int main()
{
int a[5],n;
for(int i=0;i<5;i++)
scanf("%d",&a[i]);
n = a[0];
for(int i=1;i<5;i++)
n = func(n,a[i]);
printf("%d\n",n);
return 0;
}
解答如下
#include <stdio.h>
/*
定义一个函数,求两个正整数的最小公倍数。然后,利用该函数编写一个程序,从键盘输入读取5个正整数,求出它们的最小公倍数。
*/
int function(int m,int n)
{
int t,s = m*n;
if(m<n)//确保m>n
{
int t = m;
m = n;
n = t;
}
while (t = m % n)
{
m = n;
n = t;
}
return s/n;
}
int main()
{
printf("请输入5个整数: ");
int t[5];
for(int i=0;i<5;i++)
scanf("%d",&t[i]);
int tem=t[0];//设最小公倍数为 t[0]
for(int i=0;i<5;i++)//把当前的最小公倍数分别与其它几个数用函数求最小公倍数,得到 5 个数的最小公倍数
tem=function(tem,t[i]);
printf("最小公倍数为:%d\n", tem);
return 0;
}
#include <stdio.h>
int main()
{
int m = 0;
int n = 0;
int tmp = 0;
printf("请输入两个整数: ");
scanf("%d %d", &m, &n);
while (tmp = m % n)
{
m = n;
n = tmp;
}
printf("最大公约数为:%d\n", n);
return 0;
}