(C++)输入两个正整数m和n,求其最大公约数和最小公倍数(辗转相除法)

(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版权协议,转载请附上原文出处链接和本声明。