一般,欲求最小公倍数,先求最大公约数。输入/输出部分你自己写了,这里只是简单用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*/略。
#include
y=a*b;
for(z=2;z<=a&&z<=b;z++)
{ if(a%z==0&&b%z==0)
{ x=x*z; a=a/z; b=b/z; z=z-1;} } printf("%d\n",y/x); x=1; } }
#include
int main(){
int i,j,m,n,t;
scanf("%d%d",&m,&n);
if(m
while(m!=0){
t=m%n;m=n;n=t;
}
m=i*j/n;
printf("%d\n",m);
return 0;
}
n你自己写基本框架吧:输入两个正整数 a,bint c=max(a,b);do{if(c%b&&c%a)break;c++;}while(c);printf("%d",c);
#include
int main(){
int i,j,m,n,t;
scanf("%d%d",&m,&n);
i=m,j=n;
if(m
t=m%n,m=n,n=t;
}
m=i*j/n;
printf("%d\n",m);
return 0;
}