C++ Library for Competitive Programming
 約数列挙
 約数列挙
    #include "emthrm/math/divisor.hpp"$O(\sqrt{N})$
| 名前 | 戻り値 | 
|---|---|
| template <typename T>std::vector<T> divisor(const T n); | $n$ の約数 | 
https://onlinejudge.u-aizu.ac.jp/solutions/problem/2932/review/4088339/emthrm/C++14
#ifndef EMTHRM_MATH_DIVISOR_HPP_
#define EMTHRM_MATH_DIVISOR_HPP_
#include <algorithm>
#include <vector>
namespace emthrm {
template <typename T>
std::vector<T> divisor(const T n) {
  std::vector<T> res;
  T i = 1;
  for (; i * i < n; ++i) {
    if (n % i == 0) [[unlikely]] {
      res.emplace_back(i);
      res.emplace_back(n / i);
    }
  }
  if (i * i == n && n % i == 0) res.emplace_back(i);
  std::sort(res.begin(), res.end());
  return res;
}
}  // namespace emthrm
#endif  // EMTHRM_MATH_DIVISOR_HPP_#line 1 "include/emthrm/math/divisor.hpp"
#include <algorithm>
#include <vector>
namespace emthrm {
template <typename T>
std::vector<T> divisor(const T n) {
  std::vector<T> res;
  T i = 1;
  for (; i * i < n; ++i) {
    if (n % i == 0) [[unlikely]] {
      res.emplace_back(i);
      res.emplace_back(n / i);
    }
  }
  if (i * i == n && n % i == 0) res.emplace_back(i);
  std::sort(res.begin(), res.end());
  return res;
}
}  // namespace emthrm