serna37's Library

Logo

C++ アルゴリズムとデータ構造のライブラリ

View the Project on GitHub serna37/library-cpp

:heavy_check_mark: 素因数分解
(library/number/prime/prime_fact.hpp)

素因数分解

できること

計算量

$O(\sqrt N)$

使い方

map<int, int> pf = prime_fact(N);

Verified with

Code

#pragma once
map<int, int> prime_fact(int N) {
    map<int, int> P;
    for (int i = 2; i * i <= N; ++i) {
        while (N % i == 0) {
            ++P[i];
            N /= i;
        }
    }
    if (N > 1) ++P[N];
    return P;
}
#line 2 "library/number/prime/prime_fact.hpp"
map<int, int> prime_fact(int N) {
    map<int, int> P;
    for (int i = 2; i * i <= N; ++i) {
        while (N % i == 0) {
            ++P[i];
            N /= i;
        }
    }
    if (N > 1) ++P[N];
    return P;
}
Back to top page