/*求最小公因数和最大公倍数*/
#include<stdio.h>
int min(int m, int n);
int main()
{
int _min = 0, _max = 0;
int i,m=0, n=0;
scanf("%d %d", &m, &n);
for (i = 1; i <= min(m,n); i++)
{
if ((m % i )== 0 &&( n % i) == 0)
{
_max = i;
}
}
for (i = min(m, n); i <= m * n; i++)
{
if ((i % m) == 0 && (i % n) == 0)
{
_min = i; break;//切记是最小公倍数所以用break;
}
}
printf("%d %d", _max, _min);
return 0;
}
int min(int m, int n)
{
if (m > n)
return n;
else return m;
}
改进:
经过后面的学习,求最小公倍数和最大公因数也可以用递归来处理,关键是最小公倍数和最大公因数还存在关系。
#include<stdio.h>
int gcd(int a,int b)//递归求最大公因数
{
if(b==0)
{
return a;
}
return gcd(b,a%b);
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int gys = gcd(a, b);//gys是最大公因数
int gbs = a / gys * b;//gbs是最大公倍数,且gys*gbs=a*b;
printf("%d %d", gys, gbs);
return 0;
}