Визначення
Нехай 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 були б його власним нащадком (хоча не впевнений у цьому).