C语言题:输入两个正整数M,N求其最大公约数与最小公倍数,用一个循环结构

2025-06-27 11:21:10
推荐回答(1个)
回答1:

#include 
#include 

/* 辗转相除法求最大公约数 */
int gcd (int m, int n) {
if (n)
while((m %= n) && (n %= m)); /* 两数反复相除取余,直至被整除 */
return m+n;
}

int lcm (int m, int n) {
return m * n / gcd (m, n);
}

int main (void) {
int m, n;
int mt, nt;
int gcd, lcm; /* 最大公约数、最小公倍数 */

scanf ("%d%d", &m, &n);

if (nt) /* 辗转相除法 */
while((mt %= nt) && (nt %= mt)); /* 两数反复相除取余,直至被整除 */
gcd = m+n;
lcm = m*n/gcd;

printf ("%d %d\n", m, n);
printf ("The gcd is %d\n", gcd);
printf ("The lcm is %d\n", lcm);

getch (); /*屏幕暂留*/
return 0;
}