【题目链接】
【题目考点】
1. while循环
2. 求最大公约数
- 辗转相减法
- 辗转相除法
【解题思路】
解法1:枚举
取较小数字,从该数字的值开始从大到小遍历,取一个最大的能同时被m,n整除的数字,该数字即为两数字的最大公约数。
解法2:辗转相减法与辗转相除法
具体解法见该题:
信息学奥赛一本通 1207:求最大公约数问题 | OpenJudge 2.2 7592:求最大公约数问题
【题解代码】
解法1:枚举
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m, n, s;
cin >> m >> n;
s = m > n ? n : m;//s为m, n中较小的数字
for(int i = s; i >= 1; --i)
{
if(m % i == 0 && n % i == 0)
{
cout << i;
return 0;
}
}
return 0;
}