实验思路:编写一个函数求两个整数的最大公约数,用较大的整数作被除数,用较小的数作除数,被除数除以除数的余数若为0,则直接输出除数,若不为0,则将除数的值赋值给除数,将余数的赋值给除数,得到新的被除数和除数后,若被除数除以除数的余数若为0,则直接输出除数,若不为0,执行上述操作,直至余数为0,输出除数,即为最大公约数;
而求最小公倍数,利用公式最小公倍数=被除数乘以除数除以最大公约数即可求得。
#include <iostream>
#include <cmath>
using namespace std;
int Gdivisor(int i,int j);
inline int Mmultiple(int i,int j,int k){
return i * j / k;
}
int main(){
int a,b,m,n;
cout << "Please Enter two integers " << endl;
cin >> a >> b;
if(b > a)
swap(a,b);
m = Gdivisor(a,b);
cout << "The greatest common divisor is " << m << endl;
cout << "The least common multiple is " << Mmultiple(a,b,m) << endl;
return 0;
}
int Gdivisor(int i,int j){
int r;
r = i % j;
if(0 == r)
return j;
while(0 != r)
{
i = j;
j = r;
r = i % j;
}
return j;
}
这篇博客介绍了一个用C++实现的算法,通过欧几里得算法来求解两个整数的最大公约数(GCD)和最小公倍数(LCM)。首先,定义了一个名为`Gdivisor`的函数,它通过不断交换被除数和除数直到余数为0来找出GCD。然后,利用GCD计算LCM,公式为`LCM = a * b / GCD(a, b)`。在主函数中,接收用户输入的两个整数并调用这些函数,输出结果。
454

被折叠的 条评论
为什么被折叠?



