Ich habe in PPCG eine weitere Hauptherausforderung gesehen, und ich liebe mich für einige Primzahlen. Dann habe ich den Einführungstext falsch verstanden und mich gefragt, was sich die kreativen Köpfe hier ausgedacht haben.
Es stellt sich heraus, dass die gestellte Frage trivial war, aber ich frage mich, ob dies auch für die Frage gilt, die ich (falsch) gelesen habe:
6 kann durch 2 ^ 1 * 3 ^ 1 dargestellt werden, und 50 kann durch 2 ^ 1 * 5 ^ 2 dargestellt werden (wobei ^ Exponente anzeigt).
Deine Aufgabe:
Schreiben Sie ein Programm oder eine Funktion, um zu bestimmen, wie viele verschiedene Primzahlen in dieser Darstellung einer Zahl enthalten sind.
Eingang:
Eine ganze Zahl n, so dass 1 <n <10 ^ 12, genommen mit einer beliebigen normalen Methode.
Ausgabe:
Die Anzahl der unterschiedlichen Primzahlen, die erforderlich sind, um die eindeutigen Primfaktoren von n darzustellen .
Testfälle:
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)
Dies ist keine OEIS-Sequenz.
Wertung:
Dies ist Code-Golf , niedrigste Punktzahl in Bytes gewinnt!
64
? Ist es2 (2,3)
(da 6 als 2 * 3 dargestellt werden kann) oder1 (2)
(ignorieren Sie die 6)?64
das erwartete Ergebnis ist 1 (2). Ich mag die Idee, es rekursiv zu machen, aber so lese ich die ursprüngliche Frage nicht. Ich dachte,8640
es wäre ein geeigneter Testfall, hätte aber expliziter sein sollen - danke.Antworten:
Mathematica, 39 Bytes
Probieren Sie es online aus!
danke an Martin Ender (-11 Bytes)
quelle
Cases
stellt sich als kürzer alsSelect
(-4 Bytes) heraus:Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&
(besteht alle Testfälle auf einem frischen Kernel)Count[Union@@FactorInteger@#,_?PrimeQ]&
? (Habe nicht alle Testfälle überprüft.)05AB1E ,
97 Bytes2 Bytes dank Kevin Cruijssen gespeichert
Probieren Sie es online aus!
Erläuterung
quelle
€pO
nach dem Zusammenführen der Primfaktoren und Exponenten:ÓsfìÙ€pO
€
nicht benötigt wird.MATL , 8 Bytes
Probieren Sie es online aus!
quelle
Gelee ,
97 BytesProbieren Sie es online aus! oder Schauen Sie sich die Testsuite an.
Wie?
quelle
Gaia , 6 Bytes
Probieren Sie es online aus!
ḋ
berechnet die Primfaktorisierung als [Primzahl, Exponent] -Paare._
glättet die Liste.u
Entfernt doppelte Elemente.ṗ¦
ordnet die Elemente zu und gibt 1 zurück, wenn eine Primzahl gefunden wird, andernfalls 0 .Σ
summiert die Liste.quelle
CJam (13 Bytes)
Online-Testsuite
Dies ist ziemlich einfach: Primzahlen mit Multiplizitäten erhalten, auf bestimmte Werte reduzieren, Primzahlen filtern, zählen.
Leider wies Martin auf einige Fälle hin, die in meiner ursprünglichen Antwort nicht durch den leicht interessanten Trick behandelt wurden, obwohl er auch eine 1-Byte-Einsparung lieferte, indem er beobachtete, dass da
mp
gibt0
oder1
es eher abgebildet als gefiltert werden kann.quelle
Ohm v2 ,
65 Bytes-1 Byte dank @ Mr.Xcoder
Probieren Sie es online aus!
quelle
ä{UpΣ
Eigentlich 7 Bytes
Probieren Sie es online aus!
Erläuterung:
quelle
Python 2 ,
142135119 BytesProbieren Sie es online aus!
quelle
Schale ,
1110 BytesProbieren Sie es online aus!
EDIT: 1 Byte dank Zgarb gespeichert .
quelle
#ṗuS+omLgp
spart ein Byte.Brachylog , 7 Bytes
Probieren Sie es online aus!
Eine lustige 9-Byte-Version:
ḋọ{∋∋ṗ}ᶜ¹
quelle
Ruby
-rprime
, 66 BytesProbieren Sie es online aus!
quelle
Pyth , 15 Bytes
Probieren Sie es hier aus!
quelle
R + Zahlen, 92 Bytes
Probieren Sie es online aus!
quelle
J, 20 Bytes
Von Hand gezählt lol, also sag mir, ob das aus ist.
Irgendwelche Golfvorschläge?
Langweilige Übermittlung: Reduzieren Sie die Primfaktorisierungstabelle und zählen Sie die Primzahlen.
quelle
Pari / GP , 47 Bytes
Probieren Sie es online aus!
quelle
Javascript (ES6), 145 Bytes
quelle