From 9f16c0d2f1112b95df5092baa8675f4aeced3759 Mon Sep 17 00:00:00 2001 From: deadmarshal Date: Tue, 31 Oct 2023 16:55:13 +0330 Subject: TWC241 --- challenge-241/deadmarshal/cpp/ch-2.cpp | 48 ++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 challenge-241/deadmarshal/cpp/ch-2.cpp (limited to 'challenge-241/deadmarshal/cpp/ch-2.cpp') diff --git a/challenge-241/deadmarshal/cpp/ch-2.cpp b/challenge-241/deadmarshal/cpp/ch-2.cpp new file mode 100644 index 0000000000..b53ab789cb --- /dev/null +++ b/challenge-241/deadmarshal/cpp/ch-2.cpp @@ -0,0 +1,48 @@ +#include +#include +#include + +template +size_t count_factors(T n) +{ + size_t count{}; + T c = 2; + while(n > 1) + { + if(n % c == 0) + { + n /= c; + count++; + } + else c++; + } + return count; +} + +template +void prime_order(std::vector &vec) +{ + std::sort(vec.begin(),vec.end(),[&](T a, T b){ + size_t fa = count_factors(a); + size_t fb = count_factors(b); + return fa == fb ? a < b : fa < fb; + }); +} + +template +std::ostream &operator<<(std::ostream &os, + const std::vector& vec) +{ + for(const auto &e : vec) os << e << ' '; + os << "\n"; + return os; +} + +int main() +{ + std::vector vec{11,8,27,4}; + prime_order(vec); + std::cout << vec; + return 0; +} + -- cgit