Widziałem kolejne główne wyzwanie w PPCG i bardzo mi się podobają. Potem źle przeczytałem tekst wprowadzający i zastanawiałem się, co wymyślili tutaj twórczy mózg.
Okazuje się, że postawione pytanie było trywialne, ale zastanawiam się, czy to samo dotyczy pytania, które (źle) przeczytałem:
6 może być reprezentowane przez 2 ^ 1 * 3 ^ 1, a 50 może być reprezentowane przez 2 ^ 1 * 5 ^ 2 (gdzie ^ oznacza eksponencję).
Twoje zadanie:
Napisz program lub funkcję, aby określić, ile różnych liczb pierwszych znajduje się w tej reprezentacji liczby.
Wejście:
Liczba całkowita n taka, że 1 <n <10 ^ 12, przyjęta dowolną normalną metodą.
Wynik:
Liczba różnych liczb pierwszych wymaganych do reprezentowania unikalnych czynników pierwszych n.
Przypadki testowe:
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)
To nie jest sekwencja OEIS.
Punktacja:
To jest golf-golf, najniższy wynik w bajtach wygrywa!
64
? Czy to2 (2,3)
(jako 6 można przedstawić jako 2 * 3) czy1 (2)
(zignorować 6)?64
oczekiwanego wyniku wynosi 1 (2). Podoba mi się pomysł robienia tego rekurencyjnie, ale nie w ten sposób czytam oryginalne pytanie. Myślałem, że8640
to odpowiedni przypadek testowy, ale powinien być bardziej precyzyjny - dzięki.Odpowiedzi:
Mathematica, 39 bajtów
Wypróbuj online!
dzięki Martinowi Enderowi (-11 bajtów)
źródło
Cases
okazuje się być krótszy niżSelect
(-4 bajty):Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&
(przekazuje wszystkie przypadki testowe na świeżym jądrze)Count[Union@@FactorInteger@#,_?PrimeQ]&
? (Nie sprawdziłem wszystkich przypadków testowych.)05AB1E ,
97 bajtówZaoszczędzono 2 bajty dzięki Kevinowi Cruijssenowi
Wypróbuj online!
Wyjaśnienie
źródło
€pO
po połączeniu czynników pierwszych i wykładników:ÓsfìÙ€pO
€
nie jest potrzebny.MATL , 8 bajtów
Wypróbuj online!
źródło
Galareta ,
97 bajtówWypróbuj online! lub Sprawdź pakiet testowy.
W jaki sposób?
źródło
Gaia , 6 bajtów
Wypróbuj online!
ḋ
oblicza pierwszą faktoryzację jako pary [liczba pierwsza, wykładnik] ._
spłaszcza listę.u
usuwa zduplikowane elementy.ṗ¦
odwzorowuje elementy i zwraca 1, jeśli zostanie znaleziona liczba pierwsza, 0 w przeciwnym razie.Σ
podsumowuje listę.źródło
CJam (13 bajtów)
Zestaw testów online
Jest to dość proste: uzyskaj liczby pierwsze z wielokrotnościami, zredukuj do różnych wartości, filtruj liczby pierwsze, policz.
Niestety Martin wskazał na niektóre przypadki, które nie zostały rozwiązane przez dość interesującą sztuczkę w mojej oryginalnej odpowiedzi, chociaż zapewnił również 1-bajtową oszczędność, obserwując, że od czasu
mp
daje0
lub1
można go zmapować, a nie filtrować.źródło
Ohm v2 ,
65 bajtów-1 bajt dzięki @ Mr.Xcoder
Wypróbuj online!
źródło
ä{UpΣ
Właściwie 7 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Python 2 ,
142135119 bajtówWypróbuj online!
źródło
Łuska ,
1110 bajtówWypróbuj online!
EDYCJA: Zaoszczędził 1 bajt dzięki Zgarb .
źródło
#ṗuS+omLgp
zapisuje bajt.Brachylog , 7 bajtów
Wypróbuj online!
Zabawna 9-bajtowa wersja:
ḋọ{∋∋ṗ}ᶜ¹
źródło
Rubin
-rprime
, 66 bajtówWypróbuj online!
źródło
Pyth , 15 bajtów
Wypróbuj tutaj!
źródło
R + liczby, 92 bajty
Wypróbuj online!
źródło
J, 20 bajtów
Liczone ręcznie lol, więc powiedz mi, czy to jest wyłączone.
Wszelkie sugestie dotyczące gry w golfa?
Nudne poddanie: spłaszcz tabelę faktoryzacji liczb pierwszych i policz liczby pierwsze.
źródło
Pari / GP , 47 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 145 bajtów
źródło