数论
一、判断质数
方法 1:试除法
时间复杂度:O(√n)
原理:若 n
不是质数,则必有因数 ≤
√n。
bool is_prime(int n) |
二、最大公约数(GCD)
方法 1:欧几里得算法(递归)
时间复杂度:O(log min(a, b))
原理:gcd(a, b) = gcd(b, a % b)
int gcd(int a, int b) |
方法 2:迭代版(避免递归栈溢出)
int gcd(int a, int b) |
C++17 内置函数
|
三、最小公倍数(LCM)
公式:lcm(a, b) = a * b / gcd(a, b)
注意:先除后乘避免溢出(尤其适合大数场景)。
int lcm(int a, int b) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 qyhome!