跳转至

洛谷-P2043 质因子分解

题目描述

对N!进行质因子分解。

输入格式

输入数据仅有一行包含一个正整数N,N<=10000。

输出格式

输出数据包含若干行,每行两个正整数p,a,中间用一个空格隔开。表示N!包含a个质因子p,要求按p的值从小到大输出。

输入输出样例

输入

10

输出

2 8
3 4
5 2
7 1

#include <iostream>
#include <algorithm>
#include <map>

using namespace std;

map<int, int> m;

void decomposition(int n)
{
    for (int i = 2; i <= n; ++i) {
        while (n != i) {
            if (n % i == 0) {
                ++m[i];
                n /= i;
            }
            else break;
        }
    }
    ++m[n];
}

int main()
{
    std::ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int num;
    cin >> num;

    for (int i = 2; i <= num; ++i) decomposition(i);
    for (auto e : m) {
        cout << e.first << " " << e.second << endl;
    }

    return 0;
}