30 lines
659 B
C++
30 lines
659 B
C++
#include <cstdio>
|
|
#include <cassert>
|
|
#include <vector>
|
|
|
|
using prime_vec_t = std::vector<int>;
|
|
|
|
// https://en.wikipedia.org/wiki/Trial_division
|
|
auto prime_factors(int num) -> prime_vec_t {
|
|
prime_vec_t primes{};
|
|
int f = 2;
|
|
while (num > 1) {
|
|
if (num % f == 0) {
|
|
primes.emplace_back(f);
|
|
num = num / f;
|
|
} else {
|
|
f += 1;
|
|
}
|
|
}
|
|
return primes;
|
|
}
|
|
|
|
auto main([[maybe_unused]]int argc, [[maybe_unused]]char const* argv[]) -> int {
|
|
auto factors = prime_factors(20);
|
|
for (auto const& factor : factors) {
|
|
std::printf("%d, ", factor);
|
|
}
|
|
std::printf("\n");
|
|
return 0;
|
|
}
|