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