#include <numeric> #include <functional> #include <cmath> #include <vector> #include <iostream> #include <iterator> #include <random> #include <algorithm> using namespace std; bool is_prime(int n) { if ( n < 2 || ( n > 2 && n % 2 == 0 ) ) return false; for ( int i {3}; i < sqrt(n); i+=2 ) { if ( n % i == 0 ) return false; } return true; } int main() { random_device rnd; uniform_int_distribution<int> dist{2,75}; vector<int> factors(10); generate(begin(factors), end(factors), [&]{ return dist(rnd); }); auto it = remove_if(begin(factors), end(factors), [](int i){return !is_prime(i); }); factors.erase(it, end(factors)); sort(begin(factors), end(factors)); auto number { accumulate(begin(factors), end(factors),1, multiplies<>{}) }; cout << "Random number: " << number << '\n' << "factors: "; copy(begin(factors), end(factors), ostream_iterator<int>{cout, " "}); cout << endl; }