Definicje
Pozwolić mi nbyć dodatnimi liczbami całkowitymi. Mówimy, że mjest skręt dzielnik od njeśli istnieje liczby całkowite 1 < a ≤ btakie, że n = a*bi m = (a - 1)*(b + 1) + 1. Jeśli mmoże być uzyskane z nstosując zero lub więcej skrętów dzielnik do niej, a następnie mjest potomkiem z n. Zauważ, że każda liczba jest własnym potomkiem.
Rozważmy na przykład n = 16. Możemy wybrać a = 2i b = 8, ponieważ 2*8 = 16. Następnie
(a - 1)*(b + 1) + 1 = 1*9 + 1 = 10
co pokazuje, że 10jest to skręt dzielnika 16. Za pomocą a = 2i b = 5widzimy, że 7jest to zwrot dzielnika 10. Zatem 7jest potomkiem 16.
Zadanie
Biorąc pod uwagę dodatnią liczbę całkowitą n, oblicz potomków nwymienionych w kolejności rosnącej, bez duplikatów.
Zasady
Nie wolno używać wbudowanych operacji obliczających dzielniki liczby.
Akceptowane są zarówno pełne programy, jak i funkcje, a zwracanie typu danych kolekcji (jak pewnego rodzaju zestawu) jest dozwolone, o ile jest ono posortowane i wolne od duplikatów. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
1 -> [1]
2 -> [2] (any prime number returns just itself)
4 -> [4]
16 -> [7, 10, 16]
28 -> [7, 10, 16, 25, 28]
51 -> [37, 51]
60 -> [7, 10, 11, 13, 15, 16, 17, 18, 23, 25, 28, 29, 30, 32, 43, 46, 49, 53, 55, 56, 60]
<dla liczb naturalnych, za każdy n otrzymasz każdą liczbę mniejszą od niej, ale nie samą. Myślę, że to powinno być coś podobnego. W ten sposób myślę, że tylko 4 byłoby własnym potomkiem (choć nie jestem tego pewien).