摘要:
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;} 阅读全文
摘要:
void divide(int x){ for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) { int s = 0; while (x % i == 0) x /= i, s ++ ; cout << i << ' ' << s << endl; } 阅读全文
摘要:
int primes[N], cnt; // primes[]存储所有素数bool st[N]; // st[x]存储x是否被筛掉 void get_primes(int n){ for (int i = 2; i <= n; i ++ ) { if (st[i]) continue; primes 阅读全文
摘要:
int primes[N], cnt; // primes[]存储所有素数bool st[N]; // st[x]存储x是否被筛掉 void get_primes(int n){ for (int i = 2; i <= n; i ++ ) { if (!st[i]) primes[cnt ++ ] 阅读全文
摘要:
如果 N = p1^c1 * p2^c2 * ... *pk^ck约数个数: (c1 + 1) * (c2 + 1) * ... * (ck + 1)约数之和: (p1^0 + p1^1 + ... + p1^c1) * ... * (pk^0 + pk^1 + ... + pk^ck) 阅读全文
摘要:
int gcd(int a, int b){ return b ? gcd(b, a % b) : a;} 阅读全文
摘要:
int phi(int x){ int res = x; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) { res = res / i * (i - 1); while (x % i == 0) x /= i; } if (x > 1) res 阅读全文
摘要:
int primes[N], cnt; // primes[]存储所有素数int euler[N]; // 存储每个数的欧拉函数bool st[N]; // st[x]存储x是否被筛掉 void get_eulers(int n){ euler[1] = 1; for (int i = 2; i < 阅读全文
摘要:
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 阅读全文
摘要:
求 m^k mod p,时间复杂度 O(logk)。 int qmi(int m, int k, int p){ int res = 1 % p, t = m; while (k) { if (k&1) res = res * t % p; t = t * t % p; k >>= 1; } ret 阅读全文