问题四:1088 - 求两个数M和N的最大公约数
类型:需要找规律的循环。
题目描述:
求两个正整整数 M 和 N 的最大公约数(M,N都在长整型范围内)
输入:
输入一行,包括两个正整数。
输出:
输出只有一行,包括1个正整数。
样例:
输入:
45 60
输出:
15
完整代码如下:
#include <bits/stdc++.h> // 包含标准输入输出库
using namespace std; // 使用标准命名空间
// 定义一个名为gcd的递归函数,接受两个长整型参数m和n
long long int gcd(long long int m, long long int n){
// 基本情况:当m能被n整除时(即m%n等于0),返回n作为最大公约数
if(0 == m % n){
return n;
}
// 递归步骤:当m不能被n整除时,继续调用gcd函数,并将n和m对n取余的结果作为新的参数传递给下一次函数调用
else{
return gcd(n, m % n); // 调用gcd函数,此时的问题规模变为了求解n和m%n的最大公约数
}
}
int main(){
// 数据定义部分
long long int m, n, result; // 定义变量m、n存储输入的两个整数,result用于存储计算得到的最大公约数
// 数据输入部分
cin >> m >> n; // 从标准输入读取两个正整数赋值给m和n
// 数据计算部分
result = gcd(m, n); // 调用gcd函数计算m和n的最大公约数
// 输出结果部分
cout << result; // 输出计算得到的最大公约数
return 0; // 主函数返回0,表示程序正常结束
}