1、质数
定义:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数(素数)。小于等于1的数既不是质数,也不是合数。
质数的判定----试除法
\sqrt{n}
bool is_prime(int u) {
if (u < 2) return false;
for (int i = 2; i <= u / i; i ++ ) {
if (u % i == 0)
return false;
}
return true;
}
分解质因数----试除法
n中最多包含一个大于n的质因子\sqrt{n}
最好是O(logn),最坏是O(\sqrt{n} )
void divide(int n) {
for (int i = 2; i <= n / i; i++) {
if (n % i == 0) {
int cnt = 0;
while (n % i == 0) {
n /= i;
cnt++;
}
cout << i << ' ' << cnt << endl;
}
}
if (n > 1) cout << n << ' ' << 1 << endl;
}