C语言,帮帮忙!(输入两个正整数m和n,求他们的最大公约数和最小公倍数。在运行时,输入的值m大于n

C语言,帮帮忙!(输入两个正整数m和n,求他们的最大公约数和最小公倍数。在运行时,输入的值m大于n,观察结果是否正确。再输入时,使m小于n,观察结果是否正确。最后,修改程... C语言,帮帮忙!(输入两个正整数m和n,求他们的最大公约数和最小公倍数。在运行时,输入的值m大于n,观察结果是否正确。再输入时,使m小于n,观察结果是否正确。最后,修改程序,无论m和n为何值时包括负整数,都能得到正确结果)谢谢 展开
 我来答
百度网友fc027fc
推荐于2016-06-15 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3160
采纳率:83%
帮助的人:753万
展开全部
#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);
     }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式