Прими в основній факторизації


9

Я побачив черговий головний виклик, що надходить у 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це підходящий тестовий випадок, але повинен був бути більш чітким - дякую.
pbeentje

Ви стверджуєте, що це не послідовність OEIS. Чи не A001221, значення (малої) омега-функції?
Грей Тейлор

A001221 схожий, але починає розходитися за умовами 8 та 9 (тут 2, A001221 1) через включення показника як основного в цій вправі.
pbeentje

А, бачу. Запишіть основну факторизацію, а потім подивіться, скільки я написав різних праймів (незалежно від ролі, яку вони відіграли). Цікаво, що станеться, якщо піти на крок далі і розбити показник ...
Сірий Тейлор

Відповіді:


5

Математика, 39 байт

Count[Union@@FactorInteger@#,_?PrimeQ]&

Спробуйте в Інтернеті!

завдяки Мартіну Ендеру (-11 байт)


Casesвиявляється коротше Select(-4 байти): Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&(проходить усі тестові випадки на свіжому ядрі)
JungHwan Min

Як щодо Count[Union@@FactorInteger@#,_?PrimeQ]&? (Не перевірив усіх тестових випадків.)
Мартін Ендер

@MartinEnder здається, що це має працювати. Проходить і всі тестові справи.
JungHwan Min

5

05AB1E , 9 7 байт

Збережено 2 байти завдяки Kevin Cruijssen

ÓsfìÙpO

Спробуйте в Інтернеті!

Пояснення

Ó        # push the prime factor exponents of the input
 sfì     # prepend the prime factors of the input
    Ù    # remove duplicates
     p   # check each if it is prime
      O  # sum

1
-1 байт, використовуючи €pOпісля об'єднання основних факторів і експонентів:ÓsfìÙ€pO
Кевін Кройсейсен

@KevinCruijssen: Дякую! Насправді економить 2, оскільки це не потрібно.
Емінья

Ах, звичайно .. Вау, не впевнений, як я це пропустив, ха-ха
Kevin Cruijssen,


4

Желе ,  9  7 байт

ÆFFQÆPS

Спробуйте в Інтернеті! або Перевірте тестовий сюїт.

Як?

ÆFFQÆPS ~ Повна програма.

ÆF ~ Основна факторизація як [прости, експоненти] пари.
  F ~ Згладжувати.
   Q ~ Дублікат.
    ÆP ~ Для кожного перевірте, чи він є простим. 1 якщо вірно, 0 якщо помилково.
      S ~ Сума.

4

Гая , 6 байт

ḋ_uṗ¦Σ

Спробуйте в Інтернеті!


  • обчислює основну факторизацію як пари [прости, експоненти] .

  • _ розгладжує список.

  • u видаляє повторювані елементи.

  • ṗ¦відображається через елементи і повертає 1, якщо знайдено простим, 0 в іншому випадку.

  • Σ підсумовує список.


3

CJam (13 байт)

{mFe__&:mp1b}

Інтернет-тестовий набір

Це досить просто: отримуйте праймери з кратністю, зменшуйте до чітких значень, фільтруйте праймери, рахуйте.

Сумно Мартін зазначив, що в моїй оригінальній відповіді деякі випадки не були вирішені м'яко цікавим трюком, хоча він також забезпечив 1-байтну економію, спостерігаючи, що оскільки це mpдає 0або 1його можна відобразити, а не відфільтрувати.










0

J, 20 байт

3 :'+/1 p:~.,__ q:y'

Перераховано вручну, хай, тож скажіть мені, якщо це вимкнено.

Будь-які пропозиції щодо гольфу?

Скучне подання: вирівняти таблицю основного коефіцієнта та підрахувати прості числа.



0

Javascript (ES6), 145 байт

n=>{for(a=[b=l=0],q=n,d=2;q>=2;)q%d?(b&&(a.push(0),l++),d++,b=0):(q/=d,a[l]++,b=1);for(i in a){for(d=1,e=a[i];e%d;d++);e-d||n%e&&l++};return l+1}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.