Дано целое положительное число n > 2
. Мы конвертируем его в массив следующим образом:
- Если оно равно
2
возвращать пустой массив - В противном случае создайте массив всех
n
простых факторов, отсортированных по возрастанию, затем каждый элемент замените своим индексом в последовательности простых чисел и, наконец, преобразуйте каждый элемент в массив.
Например, давайте преобразовать число 46
в массив. Во-первых, преобразуйте его в массив основных факторов:
[2, 23]
Число 23
- это 9
простое число, поэтому замените его 2
на пустой массив и 23
на [9]
. Массив теперь становится:
[[], [9]]
Главными факторами 9
являются, 3
а 3
, значит:
[[], [3, 3]]
Сделайте то же самое для обоих 3
:
[[], [[2], [2]]]
И наконец:
[[], [[[]], [[]]]]
Теперь, чтобы закодировать его, мы просто заменяем каждую открытую скобку на 1
и каждую закрывающую скобку 0
, затем удаляем все конечные нули и сбрасываем один 1
с конца. Это наше двоичное число. Используя приведенный выше пример:
[ ] [ [ [ ] ] [ [ ] ] ]
| | | | | | | | | | | |
| | | | | | | | | | | |
V V V V V V V V V V V V
1 0 1 1 1 0 0 1 1 0 0 0
Теперь просто отбросьте последние три нуля и последний 1
. Номер становится 10111001
который есть185
в десятичной системе . Это ожидаемый результат. Обратите внимание, что в преобразование массива в двоичные скобки основного массива не включены.
вход
Целое положительное число n
больше чем 2
.
Выход
Закодированное целое число n
.
Правила и формат ввода-вывода
- Стандартные правила применяются.
- Входные данные могут быть строкой или числом (но в случае строки они должны быть в базе 10).
- Вывод может быть строкой или числом (но в случае строки это должно быть в базе 10).
- Это код-гольф , выигрывает самый короткий ответ в байтах!
Контрольные примеры
Больше тестов по запросу.
3 ---> 1
4 ---> 2
5 ---> 3
6 ---> 5
7 ---> 6
8 ---> 10
9 ---> 25
10 ---> 11
10000 ---> 179189987
10001 ---> 944359
10002 ---> 183722
10003 ---> 216499
10004 ---> 2863321
10005 ---> 27030299
10006 ---> 93754
10007 ---> 223005
10008 ---> 1402478
2
так как представления не обязаны обрабатывать его.