c语言如何求最小公倍数

 我来答
zf930306
2012-03-22
知道答主
回答量:29
采纳率:0%
帮助的人:4.6万
展开全部
#include<stdio.h>
#include<math.h>
int main(void)
{
int a,b,c,d,x,y,repeat,ri,m,n;
printf("输入运算次数:\n");
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
printf("输入两个不为0的数a和b:\n");
scanf("%d%d",&a,&b);
if(a==0||b==0)
printf("a或b为0,无法运算!\n");
else
{
if(a<b){
x=a;
a=b;
b=x;
}
m=a;
n=b;
y=a%b;
while(y!=0){
a=b;
b=y;
y=a%b;
}
c=b;
d=m*n/c;
printf("最大公约数是:%d\n最小公倍数是:%d\n",c,d);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c19c0d0
2011-12-26 · TA获得超过1537个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:446万
展开全部
方法1:最小公倍数=两个数相乘 / 最大公约数
最大公约数用辗转相除法
#include<stdio.h>
int gcd(int a,int b) //递归法求最大公约数~
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a*b/gcd(a,b));
}
方法2:直接遍历求得~
#include<stdio.h>
int main()
{
int a,b;
int i;
scanf("%d%d",&a,&b);
for(i=a;;i++)
if(i%a==0 && i%b==0)
break;
printf("%d\n",i);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ph12
2011-12-26 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1364
采纳率:0%
帮助的人:1890万
展开全部
主要是辗转相除法。
方法一、不设函数
#include <stdio.h>
int main ()
{int p,r,n,m,temp;
printf("please enter two positive integer numbers n,m:");
scanf("%d %d",&n,&m);
if (n<m)
{temp=n;
n=m;
m=temp; //把大数放在n中, 小数放在m中
}
p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n); // p是原来两个整数的乘积
return 0;
}

方法二、调用函数
#include <stdio.h>
int main ()
{int p,r,n,m,temp;
printf("please enter two positive integer numbers n,m:");
scanf("%d %d",&n,&m);
if (n<m)
{temp=n;
n=m;
m=temp; //把大数放在n中, 小数放在m中
}
p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n); // p是原来两个整数的乘积
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式