From b2ad01584238b6bf7603faeb2748d93d431345a6 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Tue, 5 Apr 2022 21:38:59 +0100 Subject: - Added solutions by Ulrich Rieke. --- challenge-159/ulrich-rieke/cpp/ch-2.cpp | 41 +++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 challenge-159/ulrich-rieke/cpp/ch-2.cpp (limited to 'challenge-159/ulrich-rieke/cpp/ch-2.cpp') diff --git a/challenge-159/ulrich-rieke/cpp/ch-2.cpp b/challenge-159/ulrich-rieke/cpp/ch-2.cpp new file mode 100644 index 0000000000..85ae8382fe --- /dev/null +++ b/challenge-159/ulrich-rieke/cpp/ch-2.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +#include + +//the smallest current divisor of a number is a prime number +std::vector primeDecompose( int n ) { + std::vector primes ; + int current = 2 ; + while ( n != 1 ) { + if ( n % current == 0 ) { + primes.push_back( current ) ; + n /= current ; + } + else + current++ ; + } + return primes ; +} + +int main( int argc, char * argv[] ) { + int n = std::atoi( argv[1] ) ; + while ( n <= 0 ) { + std::cout << "Please enter a number greater than 0!\n" ; + std::cin >> n ; + } + std::vector primes { primeDecompose( n ) } ; + std::set uniqueNums( primes.begin( ) , primes.end( ) ) ; + int pl = primes.size( ) ; + int ul = uniqueNums.size( ) ; + if ( pl == ul ) { + if ( pl % 2 == 0 ) + std::cout << 1 ; + else + std::cout << -1 ; + } + else + std::cout << 0 ; + std::cout << std::endl ; + return 0 ; +} -- cgit