Определения
- Два числа взаимно просты, если их единственный положительный общий делитель равен
1
. - Список чисел взаимно прост, если каждая пара чисел в этом списке взаимно проста.
- Факторизация числа
n
- это список чисел, произведением которых являетсяn
.
задача
Учитывая положительное число n
, выведите взаимно взаимно простое разложение n
с максимальной длиной, которая не включает 1
.
пример
Ибо n=60
ответ таков [3,4,5]
, потому что 3*4*5=60
никакая другая взаимно простая первичная факторизация не 1
имеет длины, большей или равной 3
длине факторизации.
Правила и свободы
- Вы можете использовать любой разумный формат ввода / вывода.
- Записи в списке вывода не нужно сортировать.
Testcases
n output
1 []
2 [2]
3 [3]
4 [4]
5 [5]
6 [2, 3]
7 [7]
8 [8]
9 [9]
10 [2, 5]
11 [11]
12 [3, 4]
13 [13]
14 [2, 7]
15 [3, 5]
16 [16]
17 [17]
18 [2, 9]
19 [19]
20 [4, 5]
21 [3, 7]
22 [2, 11]
23 [23]
24 [3, 8]
25 [25]
26 [2, 13]
27 [27]
28 [4, 7]
29 [29]
30 [2, 3, 5]
31 [31]
32 [32]
33 [3, 11]
34 [2, 17]
35 [5, 7]
36 [4, 9]
37 [37]
38 [2, 19]
39 [3, 13]
40 [5, 8]
41 [41]
42 [2, 3, 7]
43 [43]
44 [4, 11]
45 [5, 9]
46 [2, 23]
47 [47]
48 [3, 16]
49 [49]
50 [2, 25]
51 [3, 17]
52 [4, 13]
53 [53]
54 [2, 27]
55 [5, 11]
56 [7, 8]
57 [3, 19]
58 [2, 29]
59 [59]
60 [3, 4, 5]
61 [61]
62 [2, 31]
63 [7, 9]
64 [64]
65 [5, 13]
66 [2, 3, 11]
67 [67]
68 [4, 17]
69 [3, 23]
70 [2, 5, 7]
71 [71]
72 [8, 9]
73 [73]
74 [2, 37]
75 [3, 25]
76 [4, 19]
77 [7, 11]
78 [2, 3, 13]
79 [79]
80 [5, 16]
81 [81]
82 [2, 41]
83 [83]
84 [3, 4, 7]
85 [5, 17]
86 [2, 43]
87 [3, 29]
88 [8, 11]
89 [89]
90 [2, 5, 9]
91 [7, 13]
92 [4, 23]
93 [3, 31]
94 [2, 47]
95 [5, 19]
96 [3, 32]
97 [97]
98 [2, 49]
99 [9, 11]
счет
Это код-гольф . Кратчайший ответ в байтах побеждает.
code-golf
number-theory
primes
division
Дрянная Монахиня
источник
источник
1
.)Ответы:
Математика , 24 байта
Попробуйте онлайн!
источник
#^#2&@@@FactorInteger@#&[1]
возвращается{1}
в Mathematica. Но это работает в математике.FactorInteger
другому. :)Брахилог , 4 байта
Попробуйте онлайн!
объяснение
источник
05AB1E ,
35 байт+2 байта, чтобы исправить крайний случай
1
. Спасибо Райли за патч (и за набор тестов, мой 05ab1e не такой сильный!)Набор тестов на Попробуй онлайн!
Как?
источник
1
.CJam , 9 байт
Попробуйте онлайн!
Просто разделяет входные данные на составляющие его простые степени и удаляет
1
s (необходимо только для ввода1
).источник
Haskell , 51 байт
(2#)
является анонимной функцией, которая принимает целое число и возвращает списокИспользуйте как
(2#) 99
.Попробуйте онлайн!
Вдохновленные уловкой власти, некоторые люди использовали в недавней проблеме числа без квадратов .
m#n
генерирует факторыn
, начиная сm
.m>n
мы остановимся, заключив, что мы уже нашли все факторы.x=gcd(m^n)n
является крупнейшим фактором,n
чьи главные факторы все вm
. Обратите внимание, что, поскольку меньшиеm
тестируются в первую очередь, это будет,1
если неm
является простым.x
в итоговый список, если это не 1, и затем повторяем с последующимm
делениемn
наx
. Обратите внимание , чтоx
иdiv n x
не могут иметь общие факторы.(2#)
берет число и начинает находить его факторы2
.источник
MATL , 7 байт
Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
Рассмотрим ввод
80
в качестве примера.РЕДАКТИРОВАТЬ (9 июня 2017 г.):
YF
в выпуске 20.1.0 были изменены два выхода : нефакторные простые числа и их (нулевые) показатели пропущены. Это не влияет на приведенный выше код, который работает без каких-либо изменений (но1X-
может быть удален).источник
1X-
что в новом выпуске избыточно ... также, это выглядит как разность наборов, а не пересечение для меня.Желе , 5 байт
Набор тестов на Попробуй онлайн!
Как?
источник
ÆfŒgZP
. У него такое же количество токенов, но слишком много двухбайтовых атомов;)1
для ввода,1
который запрещен (эффект выполнения пустого продукта).Алиса , 10 байт
Попробуйте онлайн!
К сожалению, здесь снова используются кодовые точки в качестве целочисленного ввода / вывода . Тестовый случай в ссылке TIO - это ввод 191808, который разбивается на 64 , 81 и 37 . Обратите внимание, что это решение печатает простые степени в порядке от наибольшего к наименьшему простому, поэтому мы получаем вывод
%Q@
.Для удобства вот 16-байтовое решение с десятичным вводом / выводом, которое использует тот же алгоритм ядра:
Попробуйте онлайн!
объяснение
Как и другие ответы, это разбивает входные данные на простые силы.
источник
Mathematica 46 байтов
Попробуйте онлайн!
источник
{}; {2}; {3}; {2}; {5}; {2,3}; {7}; {2}; {3}; {2,5}; {11}; {2,3}; {13}; ...
выводится, но{}; {2}; {3}; {4}; {5}; {2,3}; {7}; {8}; {9}; {2,5}; {11}; {4,3}; {13}; ...
вместо этого он должен выводить .#
больше, чем к#
себе, вы можете сэкономить много байтов, используяApply
(@@@
) вместоMap
(/@
):#^#2&@@@If...
PHP, 62 байта
печатает ассоциативный массив с основным в качестве ключа и частотой использования простого в качестве значения и ничего для ввода
1
Попробуйте онлайн!
Выход для
60
PHP, 82 байта
Попробуйте онлайн!
ничего не печатает для ввода,
1
если вы хотите вместо него пустой массив, а отсортированный массив будет немного длиннееисточник
Фактически , 6 байтов
Попробуйте онлайн!
Объяснение:
источник
Пари / ГП , 28 байт
Попробуйте онлайн!
источник
miniML , 47 байт
Проблемы, связанные с первичной факторизацией, здесь ужасно перепредставлены, поэтому мы все, к сожалению, вынуждены иметь факторизацию в стандартной библиотеке.
Обратите внимание, что «мини» в miniml относится к размеру набора функций, а не к размеру исходного кода, написанного на нем.
источник
Рубин, 61 байт
Я очень разочарован после просмотра 6-7 байтных решений -))
источник
Mathematica, 24 байта
Жаль,
@@@*
это не вещь. Кроме того , я хотел бы/@*
,@@*
и в самом деле, изменения@@@
в/@@
,//@
к@@@
или что - то и добавить бесконечное семейство из//@
,///@
...источник