C语言编程 输入两个正整数,求他们的最小公倍数

#include<stdio.h>main(){intm,n,r,g;printf("Pleaseinputtwonumbers:");scanf("%d%d",&m,&... #include <stdio.h>
main()
{
int m,n,r,g;
printf("Please input two numbers:");
scanf("%d%d",&m,&n);
while (1)
{
r=m%n;
if(r==0) break;
else
{ g=(m*n)/r;
printf("%d is the least common multiple \n",g);
}

}

printf("%d is the least common multiple \n",m);
}

这个是我写的,有点问题,当跳入else时就无限循环了。怎么更改,求助万能的百度
展开
 我来答
One_More_2013
2016-10-24 · TA获得超过682个赞
知道小有建树答主
回答量:1028
采纳率:50%
帮助的人:284万
展开全部

改成这样吧。

#include<stdio.h>
int main()
{
    int i, a, b;
    while(scanf("%d%d", &a, &b) && (a != 0 && b != 0))
    {
        if(a > b)           //a>b  互换a b值
        {
            a = a + b;
            b = a - b;
            a = a - b;
        }
        for(i = b;; i+=b)  //i+=b;减少循环次数  ***************
            if(i % a == 0&&i%b==0)   //满足最小公倍数条件,输出 
            {
                printf("%d\n", i);
                break;
            }
    }
}
百度网友62efd0c
2014-09-18 · TA获得超过405个赞
知道小有建树答主
回答量:854
采纳率:0%
帮助的人:607万
展开全部
首先else后面 printf完了要加return,也不知道你那个while(1)干嘛用的。
其次,你的算法很奇怪啊,好像有问题,比如m,n分别为10,7
这样r=3, g=(10*7)/3 根本不是最小公倍数啊。
做个简单的算法如下
r=m;
while(1)
{
if (r % n == 0)

break;

else

r += m;

}
printf("%d is the least common multiple \n",r);
追问
不好意思,初学,为何要加return 语句,我加完了确实好了,return(r) return(g)是一样的为何?
追答
return就是退出函数, 后面的是返回值,你没有用返回值,返回什么都是一样的结果了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白羊一打七
2019-10-25
知道答主
回答量:2
采纳率:0%
帮助的人:1310
展开全部
int f4(int num1, int num2)
{

int c = num1 * num2 / f4(num1, num2);
return c;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
推荐于2018-02-22 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6217万
展开全部
你这是采用什么算法来进行最小公倍数的生成啊?没看懂,所以不知道怎么改,写个新的?
追问
额,我用的是:
先求的最大公约数
1:m除以n等于余数r

2:若r等于零则 n为最大公约数
3,。否则令m=n,n=r返回第一步。

因为最小公倍数等于m*n除以最大公约数

我在最大公约数的程序基础上改的
追答
#include <stdio.h>
void main()

int m,n,r,g;
printf("Please input two numbers:");
scanf("%d%d",&m,&n);

g=m*n; //记下两数之积
    while (1) //求出最大公约,放到n中

r=m%n;
if(r==0)  break;
m=n;
n=r;
}
g=g/n ; //得到最小公倍

printf("%d is the least common multiple \n",g);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
菱漓仙洵
2014-09-18 · TA获得超过210个赞
知道小有建树答主
回答量:361
采纳率:50%
帮助的人:250万
展开全部
在else里的printf语句后再break一次啊
追问
也不对 ,那样就把 printf("%d is the least common multiple \n",m); 也给输出了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式