# include <stdio.h>
# include <math.h> int getEqualValue ( int c, int d)
{ int e; e = c - d; if ( e == d) { return e; } else if ( e > d) { e = getEqualValue ( e, d) ; } else if ( e < d) { e = getEqualValue ( d, e) ; } return e;
}
int main ( )
{ int m; int n; int result; int i = 0 ; int minResult; puts ( "输入两个数m和n" ) ; scanf ( "%d %d" , & m, & n) ; if ( m % 2 == 0 && n % 2 == 0 ) { while ( m % 2 == 0 && n % 2 == 0 ) { m = m / 2 ; n = n / 2 ; i++ ; } if ( m > n) { result = getEqualValue ( m, n) * pow ( 2 , i) ; } else { result = getEqualValue ( n, m) * pow ( 2 , i) ; } minResult = m * n / result; printf ( "两个数都是偶数,最大公约数是%d\n" , result) ; printf ( "最小公倍数是:%d" , minResult) ; } else { if ( m > n) { result = getEqualValue ( m, n) ; } else { result = getEqualValue ( n, m) ; } minResult = m * n / result; printf ( "两个数都是奇数或者有一个数是奇数,最大公约数是%d\n" , result) ; printf ( "最小公倍数是:%d" , minResult) ; }
}