 divisorCountTable (約数の個数のテーブル, $O(N \log N)$)
 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