Porównanie sum dzielników liczb w C.

0

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

0

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

2

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.

0

A jak to zrobić, skoro nie mogę robić funkcji zagnieżdżonych w tym języku (przynajmniej mi sie tak wydaje)?

1

Po co Ci funkcje zagnieżdżone do tego?

0

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

1

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1