#include <functional> #include <iostream> #include <iterator> #include <algorithm> #include <random> #include <vector> using namespace std; using num_type = unsigned long long; constexpr bool is_prime(num_type val, num_type divisor=2) { if ( divisor*divisor > val ) { return true; } if ( val % divisor == 0 ) { return false; } return is_prime(val, ++divisor); } int main() { vector<num_type> vals(10); random_device rnd; uniform_int_distribution<num_type> dist{2,75}; generate(begin(vals), end(vals),bind(dist,ref(rnd))); vals.erase(remove_if(begin(vals), end(vals), [](num_type val){return !is_prime(val);}), end(vals)); sort(begin(vals), end(vals)); copy(begin(vals), end(vals), ostream_iterator<num_type>{cout," "}); cout << accumulate(begin(vals),end(vals),1,multiplies<>{})<<endl; }