# Road Map

打怪路线:

  • 判定质数:204 -> 866
  • 分解质因数:
  • 筛质数:欧拉筛法

# 质数

大于 1 的正整数,如果只包含 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;
}
1
2
3
4
5
6
7
8

# 分解质因数

对正整数 x 分解质因数,输出 因子 和 个数

void divide_prime(int n) {
    for (int i = 2; i <= n/i; i ++ ) {
        if (n % i == 0) {
            int cnt = 0;
            while (n % i== 0)  n = n /i, cnt++;
            cout << i << ' ' << cnt << endl;
        }
    }
    if (n > 1) cout << n << ' ' << 1 << endl;
}
1
2
3
4
5
6
7
8
9
10