基础算法模板——数学知识
更新中。。。
1. 质数
试除数法判定一个数是不是质数
bool is_prime(int x)
{
if (x < 2) return false;
for (int i = 2; i <= x / i; i ++ )
if (x % i == 0)
return false;
return true;
}
2. 约数
试除法求一个数的所有约数
vector<int> get_divisors(int x)
{
vector<int> res;
for (int i = 1; i <= x / i; i ++ )
if (x % i == 0)
{
res.push_back(i);
if (i != x / i) res.push_back(x / i);
}
sort(res.begin(), res.end());
return res;
}
3. 最大公约数
求一个数的最大公约数
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}