#include <iostream> #include <string> #include <vector> #include <algorithm> #include <stack> #include <map> using namespace std; int gcd(int a, int b) { if (a == 0) { return b; } if (b == 0) { return a; } return gcd(b, a % b); } int main() { int m, n; while (scanf("%d%d", &m, &n) != EOF) { int t = gcd(m, n); printf("%d\n", t); } } // 64 位输出请用 printf("%lld")
gcd(a, b) = gcd(b, a % b) 位置不能换!!!
不断重复该过程,直到问题缩小为某个非0数与0的最大公约数,则非零数为所求的数。