辗转相除法求最大公约数的方法:用所得的剩余除去除数,直至最终的剩余为0。取当前的除数为最大公约数。
求45和 75 两个正整数的最大公约数
75/ 45 = 1 (余 30)45/30 = 1 (余 15)
30/15 = 2 (余 0)
最大公约数为15.#include<stdio.h> //非递归的实现 int get1(int a, int b) { int t; t = a%b; while(t>0) { a = b; b = t; t = a%b; } return b; } //递归实现 int get2(int a, int b) { return b==0 ? a:get2(b, a%b); } int main() { int m, n; scanf("%d %d", &m,&n); printf("%d\n", get1(m, n)); printf("%d\n", get2(m, n)); }