В PPCG я увидел еще одну сложную задачу, и я люблю некоторые простые числа. Затем я неправильно прочитал вступительный текст и удивился, что здесь задумали творческие мозги.
Оказывается, поставленный вопрос был тривиальным, но мне интересно, верно ли то же самое в отношении вопроса, который я (неправильно) прочитал:
6 может быть представлен 2 ^ 1 * 3 ^ 1, а 50 может быть представлен 2 ^ 1 * 5 ^ 2 (где ^ означает экспоненту).
Твое задание:
Напишите программу или функцию, чтобы определить, сколько различных простых чисел существует в этом представлении числа.
Входные данные:
Целое число n такое, что 1 <n <10 ^ 12, взятое любым нормальным методом.
Вывод:
Количество различных простых чисел, необходимых для представления уникальных простых множителей n.
Тестовые случаи:
Input Factorisation Unique primes in factorisation representation
24 2^3*3^1 2 (2, 3)
126 2^1*3^2*7^1 3 (2, 3, 7)
8 2^3 2 (2, 3)
64 2^6 1 (2) (6 doesn't get factorised further)
72 2^3*3^2 2 (2, 3)
8640 2^6*3^3*5^1 3 (2, 3, 5)
317011968 2^11*3^5*7^2*13^1 6 (2, 3, 5, 7, 11, 13)
27 3^3 1 (3)
Это не последовательность OEIS.
Подсчет очков:
Это Код-гольфвыигрывает самый низкий результат в байтах!
64
? Это2 (2,3)
(как 6 можно представить как 2 * 3) или1 (2)
(игнорировать 6)?64
ожидаемого результата 1 (2). Мне нравится идея делать это рекурсивно, но я не так читаю оригинальный вопрос. Я думал, что это8640
был подходящий тестовый пример, но должен был быть более явным - спасибо.Ответы:
Mathematica, 39 байт
Попробуйте онлайн!
спасибо Мартину Эндеру (-11 байт)
источник
Cases
оказывается корочеSelect
(-4 байта):Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&
(проходит все тестовые примеры на свежем ядре)Count[Union@@FactorInteger@#,_?PrimeQ]&
? (Не проверены все тестовые случаи.)05AB1E ,
97 байтСохранено 2 байта благодаря Кевину Круйссену
Попробуйте онлайн!
объяснение
источник
€pO
после слияния основных факторов и показателей:ÓsfìÙ€pO
€
как не требуется.MATL , 8 байт
Попробуйте онлайн!
источник
Желе ,
97 байтПопробуйте онлайн! или проверить тестовый пакет.
Как?
источник
Gaia , 6 байт
Попробуйте онлайн!
ḋ
вычисляет простую факторизацию в виде пар [простое, экспонента]_
сглаживает список.u
удаляет дубликаты элементовṗ¦
отображается через элементы и возвращает 1, если простое число найдено, 0 в противном случае.Σ
подводит итоги спискаисточник
CJam (13 байт)
Набор онлайн-тестов
Это довольно просто: получать простые числа с кратностями, сводить к разным значениям, фильтровать простые числа, считать.
К сожалению, Мартин указал на некоторые случаи, которые не были обработаны слегка интересным трюком в моем первоначальном ответе, хотя он также обеспечил 1-байтовое сохранение, наблюдая, что поскольку
mp
дает0
или1
это может быть отображено, а не отфильтровано.источник
Ом v2 ,
65 байт-1 байт благодаря @ Mr.Xcoder
Попробуйте онлайн!
источник
ä{UpΣ
На самом деле 7 байтов
Попробуйте онлайн!
Объяснение:
источник
Python 2 ,
142135119 байтПопробуйте онлайн!
источник
Шелуха ,
1110 байтПопробуйте онлайн!
РЕДАКТИРОВАТЬ: Сохранено 1 байт благодаря Zgarb .
источник
#ṗuS+omLgp
сохраняет байт.Брахилог , 7 байт
Попробуйте онлайн!
Веселая 9-байтовая версия:
ḋọ{∋∋ṗ}ᶜ¹
источник
Рубин
-rprime
, 66 байтПопробуйте онлайн!
источник
Pyth , 15 байт
Попробуй это здесь!
источник
R + числа, 92 байта
Попробуйте онлайн!
источник
J, 20 байт
Подсчитано рукой, лол, так скажи мне, если это не так.
Какие-нибудь предложения по игре в гольф?
Скучная подача: выровняйте таблицу простых чисел и посчитайте простые числа.
источник
Пари / ГП , 47 байт
Попробуйте онлайн!
источник
Javascript (ES6), 145 байт
источник