Jak wiadomo, każdą liczbę naturalną większą od 1 można w sposób jednoznaczny rozłożyć na iloczyn czynników pierwszych, np. 6 = 2 × 3, 20 = 2 × 2 × 5, itp. Zdefiniujmy funkcję S (n) jako sumę czynników pierwszych liczby naturalnej n. Na przykład S (6) = 2 + 3 = 5, zaś S (20) = 2 + 2 + 5 = 9, itp. Jeśli weźmiemy rezultat takiego sumowania, możemy ponownie obliczyć sumę jego czynników pierwszych i powtarzać to ad nauseam. Jednakże w pewnym momencie zawsze docieramy do punktu stałego tej funkcji, czyli pewnej liczby m, dla której S (m) = m. Na przykład zaczynając od liczby 8, otrzymujemy S (8) = 2 + 2 + 2 = 6, potem S (6) = 2 + 3 = 5, a następnie S (5) = 5. Zatem takie kolejne aplikowanie funkcji S daje w tym przypadku ciąg liczb 8, 6, 5, 5, 5, ...
Niech T (n) oznacza ile razy musieliśmy zastosować funkcję S do liczby n, aby zorientować się, że dotarliśmy do punktu stałego. Na przykład T (8) = 3, zaś T (4) = 1.
Twoim zadaniem jest napisanie programu, który czyta liczby naturalne a znajdujące sie w kolejnych wierszach wejścia i wypisuje kolejne wartości T(a) dla liczby a w kolejnych wierszach wyjścia. Możesz założyć, że 1 < a ≤ 50000. Przykład wejście: 81 8 wyjście 3 3 Proszę o rozwiązanie, mam tylko godzinę. Zadanie w C++.
MakPawel
Zadanie w załączniku jak czegoś nie rozumiesz pisz;