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


Odpowiedź :

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

Viz Inne Pytanie