Link Search Menu Expand Document
あるまかんライブラリ

:heavy_check_mark: divisorCountTable (約数の個数のテーブル, $O(N \log N)$)
(Math/Number-Theory/divisor-count-table.hpp)

Verified with

Code

#pragma once

#include <vector>

/**
 * @brief divisorCountTable (約数の個数のテーブル, $O(N \log N)$)
 * cnt[i] = i の約数の個数; 範囲は閉区間 [0, N]
 */
std::vector<int> divisorCountTable(int N) {
    std::vector<int> cnt(N + 1);
    for (int d = 1; d <= N; ++d) {
        for (int i = d; i <= N; i += d) ++cnt[i];
    }
    return cnt;
}
#line 2 "Math/Number-Theory/divisor-count-table.hpp"

#include <vector>

/**
 * @brief divisorCountTable (約数の個数のテーブル, $O(N \log N)$)
 * cnt[i] = i の約数の個数; 範囲は閉区間 [0, N]
 */
std::vector<int> divisorCountTable(int N) {
    std::vector<int> cnt(N + 1);
    for (int d = 1; d <= N; ++d) {
        for (int i = d; i <= N; i += d) ++cnt[i];
    }
    return cnt;
}
Back to top page