c语言编程求最大公约数和最小公倍数

我的 #include<stdio.h> int main() { int m,n; int divisor,dividend,res;/*除数 被除数 余数*/ scanf("%d%d",&m,&n); if(m>0&&n>0) { if(m>=n) { divisor=n; dividend=m; } else { divisor=m; dividend=n; } res=d... 我的 #include<stdio.h> int main() { int m,n; int divisor,dividend,res;/*除数 被除数 余数*/ scanf("%d%d",&m,&n); if(m>0&&n>0) { if(m>=n) { divisor=n; dividend=m; } else { divisor=m; dividend=n; } res=dividend%divisor; while(res!=0) dividend=divisor; divisor=res; res=dividend%divisor; printf("%d",divisor); } else printf("error!\n"); return 0; } 这是我的最大公约数的求法,输入4 6 没有结果 哪里错了? m * n / divisor为什么等于最小公倍数 展开

#include<stdio.h>
int
main()
{
int
m,n;
int
divisor,dividend,res;/*除数
被除数
余数*/
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
if(m>=n)
{
divisor=n;
dividend=m;
}
else
{
divisor=m;
dividend=n;
}
res=dividend%divisor;
while(res!=0)//循环体是三条语句,不加大括号循环只执行一条语句
{
dividend=divisor;
divisor=res;
res=dividend%divisor;
}
printf("%d",divisor);
}
else
printf("error!\n");
return
0;
}
两数相乘除以最大公约数就是最小公倍数
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-02
最大公约数用辗转求余计算,a,b输入,最后跳出循环的a就是最大公约数
while(b!=0)
{
temp=b;
b=a%b;
a=temp;
}
最小公倍数:A
*
B
/
最大公约数
第2个回答  2019-06-10
//确保m和n都是正整数
//做除法有点不厚道
int
zdgys(int
m,
int
n){
return
m
*
n
/
zxgbs(m,
n);
}
int
zxgbs(int
m,
int
n){
while(m
&&
n){
if(m
>
n)
m=m
%
n;
else
n=n
%
m;
}
return
m
==
0
?
n
:
m;
}
第3个回答  2019-07-12
#include
"stdio.h"
main()
{
int
max,min;
int
p;
int
m,n,i;
scanf("%d
%d",&m,&n);
p=m;
if(p>n)
{p=n;}
for(i=p;i>=1;i--)
{
if(m%i==0
&&
n%i==0)
{
max=i;
break;
}
}
min=m*n/max;
printf("max=%d,min=%d",max,min);
}
相似回答