最大公约数
1.【问题】
输入两个正整数 m 和 n,求它们的最大公约数。
【输入格式】
一行两个正整数 m 和 n,用一个空格隔开,2≤m,n≤10000。
【输出格式】
一行一个正整数,表示 m 和 n 的最大公约数。
【输入样例】
24 36
【输出样例】
12
2.【问题分析】
用欧几里得“辗转相除法”演示求最大公约数的过程,发现(m,n)的最大公约数与(n,m % n)的最大公约数是一样的,但是数据规模变小了。
所以,最大公约数问题的递归公式为:

以下演示1997和615的最大公约数,看明白后,可以尝试使用其他的任意两个数用辗转相除法演示计算过程。
3.【程序及备注】
#include<iostream> using namespace std; int gcd(int m,int n){ if(n == 0) return m; else return gcd(n,m % n); } int main(){ int m,n; cin >> m >> n; cout << gcd(m,n) << endl; return 0; }
4.【运行结果】

作者:newcode 更多资源请关注纽扣编程微信公众号

从事机器人比赛、机器人等级考试、少儿scratch编程、信息学奥赛等研究学习

浙公网安备 33010602011771号