(C++)输入两个正整数m和n,求其最大公约数和最小公倍数(辗转相除法)
方法:辗转相除法、更相减损法
#include<iostream>
using namespace std;
//输入两个正整数m和n,求其最大公约数和最小公倍数
int main() {
int m, n, p, r, temp;
//m:被除数 n:除数 p:除数与被除数的乘积 r:用于接收m%n的余数 temp:用于交换m,n
cout << "input two positive integer number n,m:" << endl;
cin >> m >> n;
//判断输入的两个整数大小关系,保证被除数大于除数
if (m < n) {
temp = m;
m = n;
n = temp;
}
p = m * n;
//辗转相除法:以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数
while (n != 0) {
r = m % n;
m = n;
n = r;
}
//最大公约数
cout << "HCF=" << m << endl;
//两个整数的最小公倍数等于两整数之积除以最大公约数。
cout << "LCD=" << p / m << endl;
return 0;
}
版权声明:本文为weixin_45487120原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。