約数列挙 (divisor)
目的
約数をvectorに保存する。
制約
コード
vector<long long> divisor(long long n) { vector<long long> ret; for (long long i = 1; i * i <= n; i++) { if (n % i == 0) { ret.push_back(i); if (i * i != n) ret.push_back(n / i); } } sort(begin(ret), end(ret)); return (ret); }
コードテスト
#include <bits/stdc++.h> using namespace std; vector<long long> vec; vector<long long> divisor(long long n) { vector<long long> ret; for (long long i = 1; i * i <= n; i++) { if (n % i == 0) { ret.push_back(i); if (i * i != n) ret.push_back(n / i); } } sort(begin(ret), end(ret)); return (ret); } int main() { ios::sync_with_stdio(false); cin.tie(0); long long N; string S; cin >> N; vec = divisor(N); for (long long i = 0; i < vec.size(); i++){ cout << vec.at(i) << endl; } }
30 1 2 3 5 6 10 15 30