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

:warning: enumerateDivisors() (約数列挙)
(Math/Number-Theory/enumerate-divisors.hpp)

Code

#pragma once
#include <cstdint>
#include <algorithm>
#include <vector>

/**
 * @brief enumerateDivisors() (約数列挙)
 */
template <class Integer>
std::vector<Integer> enumerateDivisors(Integer n) {
    std::vector<Integer> divisors;
    Integer i;
    for (i = 1; i * i < n; ++i) {
        if (n % i == 0) divisors.push_back(i), divisors.push_back(n / i);
    }
    if (i * i == n) divisors.push_back(i);
    std::sort(divisors.begin(), divisors.end());
    return divisors;
}
#line 2 "Math/Number-Theory/enumerate-divisors.hpp"
#include <cstdint>
#include <algorithm>
#include <vector>

/**
 * @brief enumerateDivisors() (約数列挙)
 */
template <class Integer>
std::vector<Integer> enumerateDivisors(Integer n) {
    std::vector<Integer> divisors;
    Integer i;
    for (i = 1; i * i < n; ++i) {
        if (n % i == 0) divisors.push_back(i), divisors.push_back(n / i);
    }
    if (i * i == n) divisors.push_back(i);
    std::sort(divisors.begin(), divisors.end());
    return divisors;
}
Back to top page