1591. 最大公因数

正解是使用辗转相除法,该方法你们在数学必修三应该都学过,就不赘述具体步骤了

质因数分解不能过本题,这是因为质因数分解的时间复杂度是 O(\sqrt n) ,即假设真的是一个质数,起码要遍历到 \sqrt n 次才能结束循环

注意这题卡 long long ,所有相关的变量都应该设为 long long

热知识: 编译器自带 __gcd 函数。

代码如下:

#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a, b; ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } signed main() { cin >> a >> b; cout << gcd(a, b); return 0; }