Witam, mam następujące zadanie:
Niech f(n) = x, gdzie n - liczba całkowita z zakresu 1-1000, x - suma jej dzielników (np. f(6)=6 bo 1+2+3). W zadaniu jest mowa najpierw o wypisaniu n-ów dla których f(n)=n, aczkolwiek jest to dość łatwe, lecz potem piszą o parze zaprzyjaźnionej, jest ona wtedy kiedy x,n to dowolne liczby i występuje f(n)=x i f(x)=n, czyli np. załóżmy że suma dzielników 4 to 7 a 7 to 4 -> f(4)=7, f(7)=4. Mam takie pary wypisać w tabeli. Jak takie pary wyszukać? Jeśli coś nieprecyzyjnie wytłumaczyłem, proszę pisać.
Na oko najbardziej naiwnym podejściem byłoby sprawdzanie dla każdego n czy występuje prawidłowość f(f(n))=n
.
Choć może da się jakoś ładniej to zrobić.
Nie do końca rozumiem problem. Sprawdzasz f(n)
, a potem patrzysz czy n == f(f(n))
. Przy okazji, może Cię zainteresować memoizacja/cache'owanie wyników.
A jak to zrobić, skoro nie mogę robić funkcji zagnieżdżonych w tym języku (przynajmniej mi sie tak wydaje)?
Po co Ci funkcje zagnieżdżone do tego?
no wierz mi, że ja nie mam kompletnie pomysłu jak to zapisać :( ta wskazówka powyżej mi nic nie rozjaśnia bo właśnie nie wiem jak to "ubrać" w język
To może inaczej: napisz w C funkcję, która liczbę x
podnosi do kwadratu i zwraca ten wynik. W kodzie wywołaj tę funkcję z argumentem 3.
Matematycznie byłoby to oczywiście f(x)=x^2
i potem f(3)
.