C语言,帮帮忙!(输入两个正整数m和n,求他们的最大公约数和最小公倍数。在运行时,输入的值m大于n
C语言,帮帮忙!(输入两个正整数m和n,求他们的最大公约数和最小公倍数。在运行时,输入的值m大于n,观察结果是否正确。再输入时,使m小于n,观察结果是否正确。最后,修改程...
C语言,帮帮忙!(输入两个正整数m和n,求他们的最大公约数和最小公倍数。在运行时,输入的值m大于n,观察结果是否正确。再输入时,使m小于n,观察结果是否正确。最后,修改程序,无论m和n为何值时包括负整数,都能得到正确结果)谢谢
展开
展开全部
#include<stdio.h>
int gcd(int m, int n)
{
if(m<=0 || n<=0) return 0;
int min=m<n?m:n;
int i;
for(i=min;i>=1;i--)
{
if(m%i==0 && n%i==0) return i;
}
return 1;
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
int res=gcd(m,n);
printf("最大公约数%d\n",res);
printf("最小公倍数%d\n",m*n/res);
}
}
追问
可以解释吗?
追答
#include<stdio.h>
int gcd(int m, int n)
{
if(m<=0 || n<=0) return 0;//如果m或者n小于等于0,返回0.
int min=m<n?m:n;//m和n中找出较小的
int i;
for(i=min;i>=1;i--)//从较小的开始找最大公约数
{
if(m%i==0 && n%i==0) return i;
}
return 1;
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
int res=gcd(m,n);
printf("最大公约数%d\n",res);
printf("最小公倍数%d\n",m*n/res);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询