December 2018 1 50 Report
84. Punkt stały (dla średnio kumatych)


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++.

Recommend Questions



Life Enjoy

" Life is not a problem to be solved but a reality to be experienced! "

Get in touch

Social

© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.