#include /* 2b. Policzyc ile liczba ma roznych (unikalnych) dzielnikow pierwszych. Podaj liczbe calkowita: 220 Rozne dzielniki pierwsze liczby 220 to: 2 5 11 Liczba roznych dzielnikow pierwszych liczby 220 to: 3 */ int countDistinctPrimeDivisors(int n) { int count = 0; int prev_div = 0; // Zmienna do przechowywania poprzedniego dzielnika // Obliczanie liczby dzielników 2 while (n % 2 == 0) { if (prev_div != 2) { count++; printf("2 "); prev_div = 2; } n = n / 2; } // Sprawdzanie dla pozostałych liczb pierwszych for (int i = 3; i * i <= n; i = i + 2) { while (n % i == 0) { if (prev_div != i) { count++; prev_div = i; printf("%d ", i); } n = n / i; } } // Jeśli liczba n jest większa od 2, a jednocześnie jest liczbą pierwszą, to dodaj ją jako dzielnik if (n > 2 && n != prev_div) { count++; printf("%d ", n); } return count; } int main() { int num; printf("Podaj liczbe calkowita: "); scanf("%d", &num); printf("Rozne dzielniki pierwsze liczby %d to: ", num); int result = countDistinctPrimeDivisors(num); printf("\nLiczba roznych dzielnikow pierwszych liczby %d to: %d\n", num, result); return 0; }