急求用 c语言编写一个程序求两个数的最小公倍数,越简单越好。

如题所述

一般,欲求最小公倍数,先求最大公约数。输入/输出部分你自己写了,这里只是简单用C语言表示使用欧几里德算法:gcd(a,b) = gcd(b,a mod b)进行计算的部分。理解这个算法是关键,可以参考网络上的相关解释或者相关书籍上的解释。 输入部分/* input */略。 处理部分先求最大公约数,用递归形式表示欧几里德算法。如果理解了算法,看上去是非常舒服(简单)的。/* greatest common divisor */int gcd(int a, int b){ return b == 0 ? ( a : gcd(a%b));} 通过最大公约数,再求最小公倍数。/* least common multiple */int lcm(int a, int b) { return a * b / gcd (a, b);} 输出部分/*output*/略。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-16
#include <stdio.h> void main(){ int n,i,m,a,b,c,y,x,z; x=1; scanf("%d",&n); for(i=1;i<=n;i++) {scanf("%d%d",&a,&b); </p><p>y=a*b; </p><p>for(z=2;z<=a&&z<=b;z++)</p><p>{ if(a%z==0&&b%z==0)</p><p>{ x=x*z; a=a/z; b=b/z; z=z-1;} } printf("%d\n",y/x); x=1; } }
第2个回答  2017-03-01
#include<stdio.h>
int main(){
int i,j,m,n,t;
scanf("%d%d",&m,&n);
if(m<n)
{t=m,m=n,n=t;}
while(m!=0){
t=m%n;m=n;n=t;
}
m=i*j/n;
printf("%d\n",m);
return 0;
}
第3个回答  2013-09-16
n你自己写基本框架吧:输入两个正整数 a,bint c=max(a,b);do{if(c%b&&c%a)break;c++;}while(c);printf("%d",c);
第4个回答  推荐于2017-04-23
#include<stdio.h>
int main(){
int i,j,m,n,t;
scanf("%d%d",&m,&n);
i=m,j=n;
if(m<n) t=m,m=n,n=t;
while(m%n!=0){
t=m%n,m=n,n=t;
}
m=i*j/n;
printf("%d\n",m);
return 0;
}本回答被网友采纳
相似回答