第1个回答 2018-03-30
#include "stdio.h"
void main(){
int m,n,temp,a,b;
printf("请输入2个正整数m和n:");
scanf("%d%d",&m,&n);
a=m;
b=n;
if(m<n){ temp="m;" m="n;" n="temp;" }="" if(0="=n){" printf("除数为0!\n");="" return;="" while(temp!="0){" printf("最大公约数为:%d\n",n);="" printf("最小公倍数为:%d\n",a*b="" n);="" }
本回答被网友采纳
第2个回答 2011-10-23
#include"stdio.h"
main()
{
int m,n,t,h,a,b,q;
printf("输入m,n的值:");
scanf("%d%d",&m,&n);
a=m;
b=n;
if (n>m)
{t=m;m=n;n=t;}
while (m%n!=0)
{ h=n;n=m%n;m=n;}
a=a/n;b=b/n;q=a*b*n;
printf("两数最大公约数为 %d,最小公倍数为 %d\n",n,q);
}本回答被提问者采纳
第3个回答 2011-10-23
if (n>m)
{t=m;m=n;n=t;}
while (m%n)
{ h=n;n=m%n;m=n;}
算法就是用辗转相除法求最大公约数
算法描述:
m对n求余为a, 若a不等于0
则 m <- n, n <- a, 继续求余
否则 n 为最大公约数