求两个数的最大公约数和最小公约数。
#include <stdio.h>//两个数的乘积如 a*b等于他的最大公约数和最小公倍数的乘积。
int gcd(int m, int n);
int lcm(int m, int n);
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("%d %d", gcd(m, n), lcm(m, n));
return 0;
}
int gcd(int m, int n)//求最小公约数的方法,即两个数中,最小的那个数的最大因数能整除输入的两个数。
{
int i, min, rtn, max;
if ( m > n){
max = m;
min = n;
}else
{
max = n;
min = m;
}
for( i = 1; i <= min; i++ ){
if ( min % i == 0 && max % i == 0)
rtn = i;
}
return (rtn);
}
int lcm(int m, int n)//求两个数的最小公倍数的方法。
{
int fact = m*n, max, min, rtn, i;
if ( m > n){
max = m;
min = n;
}else
{
max = n;
min = m;
}
for ( i = max; i <= fact; i++){
if ( i % min == 0 && i % max == 0){
rtn = i;
break;
}
}
return (rtn);
}