用c++编程:求两个正整数的最大公约数和最小公倍数

如题所述

思路:先求最大公约数,再让两个数相乘,再除最大公约数即可。
#include<stdio.h>
int main()
{ int a,b,c,d,m,n,i;
scanf("%d %d",&m,&n); (输入两个数)
for(i=m;i>=1;i--)
{a=m%i;
b=n%i; (令m,n同时除以一个比他们小的数)
if(a==0&&b==0) (当m,n除以i都能没有余数时,被除数即为最大公约数)
{printf("the greatest common divisor is %d\n",i);break;}
else
continue;}
c=m/i*n;(m*n 中包含两个最大公约数,除以一个即可 )
printf("the least common multiple is %d\n",c);
return 0;}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-01
#include <iostream>

int GCD(int x, int y);
int LCM(int x, int y, int z);

int main(void)
{
using namespace std;
cout << "请输入两个正整数:\n";
int x;
int y;
cout << "第一个正整数:";
cin >> x;
cout << "第二个正整数:";
cin >> y;
int G_CD = GCD(x, y); // 最大公约数
int L_CM = LCM(x, y, G_CD); // 最小公倍数 = 两数乘积除以最大公约数
cout << "最大公约数是:" << G_CD << endl;
cout << "最小公倍数是:" << L_CM << endl;
return 0;
}

int GCD(int x, int y)
{
int z = x % y;
while (z != 0)
{
x = y;
y = z;
z = x % y;
}
return y;
}

int LCM(int x, int y, int z)
{
return x * y / z;
}
第2个回答  2012-04-02
/*求最大公约数--递归*/
int MaxDnum(int x,int y)
{
int z=x%y;
if(z)
{
MaxDnum(y,x%y);
}
else
return y;

}
相似回答