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时就无限循环了。怎么更改,求助万能的百度 展开
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时就无限循环了。怎么更改,求助万能的百度 展开
5个回答
展开全部
首先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);
其次,你的算法很奇怪啊,好像有问题,比如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就是退出函数, 后面的是返回值,你没有用返回值,返回什么都是一样的结果了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int f4(int num1, int num2)
{
int c = num1 * num2 / f4(num1, num2);
return c;
}
{
int c = num1 * num2 / f4(num1, num2);
return c;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这是采用什么算法来进行最小公倍数的生成啊?没看懂,所以不知道怎么改,写个新的?
追问
额,我用的是:
先求的最大公约数
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);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在else里的printf语句后再break一次啊
追问
也不对 ,那样就把 printf("%d is the least common multiple \n",m); 也给输出了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询