最近在准备算法比赛,稍微的总结了一下算法中比较常用到常见的数学问题,分享给大家。
1.最大公约数
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b); }
2.最小公倍数
int lcm(int a, int b) {
return a / gcd(a, b) * b; // d = gcd(a,b) a*b / d 就是最小公倍数
// ,为了防止计算溢出 改成 a / d * b
}
3.分数的处理
可以通过定义结构体让自己更清晰,不过多赘述
4.素数的问题
素数的判断
bool isprime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i < n; i++)
if (n