[C语言]编程:输入两个正整数,求其最大公约数和最小公倍数

要求:使用 do-while 语句实现循环结构

#include<stdio.h>

int main()

{

int m, n;

int gcd, lcm;

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

gcd = m < n ? m : n;

lcm = m > n ? m : n;

do

{

if(m % gcd == 0 && n%gcd==0)

break;

gcd--;

}while(1);

do

{

if(lcm % m == 0 && lcm % n==0)

break;

lcm++;

}while(1);

printf("gcd=%d lcm=%d\n", gcd, lcm);

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-15
程序如下:
main(){
int a,b,r,gcd,lcm;
printf("请输入两个正整数:");
scanf("%d%d",&a,%b);
while(r=a%b){
a=b;
b=r;
}
gcd=b;
lcm=a*b/gcd;
printf("gcd=%d,lcm=%d\n",gcd,lcm);
}
就是这样。
有什么问题请留言。
第2个回答  2021-12-15
通常的方法是,使用辗转相除法计算a和b的最大公约数,求得最大公约数以后,再把a和b的积除以最大公约数,就得到了a和b的最小公倍数。
lcm=a*b;
do{r=a%b;
a=b;
b=r;
}while(r);
gcd=a;
lcm/=a;
第3个回答  2021-10-15

输入两正整数,输出其最大公约数最小公倍数的c程序,以“6 3”输入,调试如下:

#include<stdio.h>

int main(){

int a,b,t,r,n;

printf("请输入两个数字:\n");

scanf("%d %d",&a,&b);

if(a<b) {t=b;b=a;a=t;}

t=a;n=b;

do{

r=a%b;a=b;

b=r;

}while(r!=0);

printf("这两个数的最大公约数是\%d,最小公倍数是%d\n",b,t*n/b); return 0;

}

追答

#include

int main(){

int a,b,t,r,n;

printf("请输入两个数字:\n");

scanf("%d %d",&a,&b);

if(a<b) {t=b;b=a;a=t;}

t=a;n=b;

do{

r=a%b;a=b;

b=r;

}while(r!=0);

printf("这两个数的最大公约数是%d,最小公倍数是%d\n",b,t*n/b); return 0;

}