Pomocy! C++!
Napisz funkcję, która policzy ile jest RÓŻNYCH czynników w rozkładzie dowolnej liczby na czynniki pierwsze



Odpowiedź :

REGNAD

Odpowiedź:

#include <iostream>

bool isPrime(int n){

   int counter = 0;

   for(int i = 1; i <= n; i++){

       if(n % i == 0){

           counter++;

       }

   }

   return counter == 2;

}

int countDifferentFactors(int n){

   int number = n;

   int counter = 0;

   for(int i = 1; i <= n; i++){

       if(isPrime(i) && number % i == 0){

           number /= i;

           counter++;

       }

   }

   return counter;

}

int main()

{

   std::cout << countDifferentFactors(36) << std::endl;

   std::cout << countDifferentFactors(462) << std::endl;

   return 0;

}

Wyjaśnienie:

Jako przykład dałem liczbę 36, której dzielniki przy rozkładzie do 2,2,3,3, a u mnie wynik to 2, bo liczy je tylko raz.

Ale natomiast przy liczbie 462 wynik będzie 4, bo jej kolejne dzielniki przy rozkładzie na czynniki pierwsze to 2,3,7, 11