summaryrefslogtreecommitdiff
path: root/content/math/divisors.cpp
blob: 5afd4fbaa04dda648144e735cd88df80fd004aa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
ll countDivisors(ll n) {
	ll res = 1;
	for (ll i = 2; i * i * i <= n; i++) {
		ll c = 0;
		while (n % i == 0) {n /= i; c++;}
		res *= c + 1;
	}
	if (isPrime(n)) res *= 2;
	else if (n > 1) res *= isSquare(n) ? 3 : 4;
	return res;
}