编写函数实现,输入两个整数m和n,求最大公约数和最小公倍数,c语言 50

 我来答
卷帘青山H
高粉答主

2019-07-09 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:426
采纳率:100%
帮助的人:20.1万
展开全部

#include <stdio.h>

int main()

{

int m,n,c,d,t;

printf("请输入两个数:\n");

scanf("%d%d",&m,&n);

if(m<n)

{

t=m;

m=n;

n=t;

}

d=m*n;

c=m%n;

while(c!=0)

{

m=n;

n=c;

c=m%n;

}

printf("最大公约数是:\n%d\n",n);

printf("最小公倍数是:\n%d\n",d/n);

}

扩展资料

算法思想

利用格式输入语句将输入的两个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。

用辗转相除法来求最大公约数。在求最小公倍数时要清楚最大公约数和最小公倍数的关系,即两数相乘的积除以这两个数的最大公约数就是最小公倍数。

px...5@sohu.com
2017-07-13 · TA获得超过120个赞
知道小有建树答主
回答量:154
采纳率:50%
帮助的人:30.6万
展开全部
简单的想法设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用b除a,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1,……如此下去,直到能整除为止。其最后一个非零除数即为(a,b)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6ef081a
2017-07-13
知道答主
回答量:56
采纳率:100%
帮助的人:9.9万
展开全部
# include "stdio.h"
int main()
{
int m,n,a,b,sum,t;
scanf("%d %d",&m,&n);
if(n>m)
{
t=n;n=m;m=t;
}
sum=n*m;
while(n!=0)
{
t=m%n;m=n;n=t;
}
printf("最大公约数:%d\n最小公倍数为:%d\n",m,sum/m);
}

自己写的,望采纳哦

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旅初彤2B
2017-07-13 · TA获得超过2.6万个赞
知道大有可为答主
回答量:4.4万
采纳率:65%
帮助的人:5319万
展开全部
# include<stdio.h>
void main(){
int m,n,c,x,y;
printf("请输入两个正整数,用逗号间隔:");
scanf("%d,%d",&m,&n);
x=m;
y=n;
if (m<n){
c=m;
m=n;
m=c;
}
while (n!=0){
c=m;
m=n;
n=c%n;
}
c=x*y/m;
printf("最大公约数为%d,最小公倍数为%d\n",m,c);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-07-13
展开全部
#include <stdio.h>
main()
{
int p,r,n,m,temp;
printf("请输入两个正整数n,m"); //这个地方运行时要注意,两个数字之间要用“,”割开。
scanf("%d,%d",&n,&m);
p=n*m;
if(n<m)
{temp=n;
n=m;
m=temp;
}

while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("它们的最大公约数为:%d\n",n);
printf("他们的最小公倍数为:%d\n",p/n);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式