南邮OJ 1015 最大公约数和最小公倍数

题目描述:求两个正整数的最大公约数和最小公倍数

题目链接:点击打开链接

#include <iostream>
using namespace std;

int main()
{
	//cout << "请输入两个正整数:" << endl;
	int m,n;
	cin >> m >> n;
	int a,b,c,d;
	if (m>=n)
	{
		a = n;
		c = m;
	}
	else
	{
		a = m;
		c = n;
	}
	for (int i=1; i<=a; i++)
	{
		if ((m%i == 0)&&(n%i == 0))
		{
			b = i;
		}
	}
	for (int j=1; j<=a; j++)
	{
		if (((j*c)%m == 0)&&((j*c)%n == 0))
		{
			d = j*c;
			break;
		}
	}
	cout << b << " " << d << endl;
	return 0;
}

思路:

1、首先搞懂最大公约数和最小公倍数的含义!最大公约数就是指:一个数首先都是指定的两个数的约数即公约数,然后在看这些公约数中的最大的数值。最小公倍数:首先得要是指定两个数的倍数,然后是这些数中最小的那个数。

2、最大公约数编程思想:首先比较两个数的大小,因为最大公约数是绝对不会超过指定两个数的最小的那个数(有点拗口),然后进行遍历,从1开始,一直到较小的那个数为止,每个数进行取余。如果是约数,那么余数一定是0。这样遍历到最后一次的时候,即为最大公约数!

3、同理,只有一点区别,求最小公倍数的时候,即第一次满足条件的时候就结束循环,这样才能求出最小公倍数(因为两个数的公倍数是无数多个的,如果不跳出循环则为死循环!)。


你可能感兴趣的:(代码,最大公约数和最小公倍数,南邮OJ)