一、为什么学数论?
数论是算法竞赛和面试中的常见考点,涉及:
- 最大公约数 / 最小公倍数
- 素数判定与筛法
- 快速幂与模运算
- 组合数学基础
掌握这几个工具,能解决大量看似复杂的数学问题。
二、最大公约数(GCD)
2.1 辗转相除法(欧几里得算法)
public int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}- 时间:O(log(min(a, b)))
- 原理:
gcd(a, b) = gcd(b, a % b)
2.2 最小公倍数(LCM)
public int lcm(int a, int b) {
return a / gcd(a, b) * b; // 先除后乘防溢出
}2.3 应用
| 场景 | 用法 |
|---|