Визначення
Нехай mі nбудуть натуральними числами. Ми говоримо , що mє дільником твіст з , nякщо існує цілих чисел , 1 < a ≤ bтаких , що n = a*bі m = (a - 1)*(b + 1) + 1. Якщо mможе бути отримана з nзастосовуючи нуль або більше подільники завихрення до нього, то mє нащадок з n. Зауважте, що кожне число - це власний нащадок.
Наприклад, розглянемо n = 16. Ми можемо вибрати a = 2і b = 8, так як 2*8 = 16. Потім
(a - 1)*(b + 1) + 1 = 1*9 + 1 = 10
що показує, що 10це ділення повороту 16. З a = 2і b = 5, потім ми бачимо, що 7це перекрут дільника 10. Таким чином 7є нащадком Росії 16.
Завдання
Давши додатне ціле число n, обчисліть нащадків n, перелічених у порядку зростання, без дублів.
Правила
Вам заборонено використовувати вбудовані операції, які обчислюють дільники числа.
Приймаються як повні програми, так і функції, і повернення типу даних колекції (як-от набір певного типу) дозволено, якщо воно відсортовано і не дублює. Виграє найменший байт, а стандартні лазівки заборонені.
Випробування
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]
<для натуральних чисел, для кожного n ви отримуєте кожне число менше, ніж воно, але не саме воно. Я думаю, це має бути щось подібне. Таким чином, я думаю, що лише 4 були б його власним нащадком (хоча не впевнений у цьому).