Skip to content
Author: lllyouo
Date: 20250701
tag: 欧拉筛
link: https://www.luogu.com.cn/problem/P10495

问题描述

link

分析

参考代码

cpp
#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 10;
int primes[N], cnt = 0;
bool not_prime[N];

void get_primes(int n) {
    for (int i = 2; i <= n; i++) {
        if (!not_prime[i]) primes[cnt++] = i;

        for (int j = 0; j < cnt && primes[j] <= n / i; j++) {
            not_prime[i * primes[j]] = true;
            if (i % primes[j] == 0) break;
        }
    }
}

int main() {
    int n; cin >> n;
    get_primes(n);
    
    for (int i = 0; i < cnt; i++) {
        int cnt = 0;
        for (int j = 1; j <= 20; j++) {
            cnt += n / pow(primes[i], j);
        }
        if (cnt) cout << primes[i] << " " << cnt << endl;
    }
    
    return 0;
}