Определения
Позвольте 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 будет его собственным потомком (хотя и не уверен в этом).