Wenn eine positive ganze Zahl (streng) weniger Primfaktoren hat (ohne Multiplizitäten zu zählen) als ihr Nachfolger und ihr Vorgänger, nennen wir sie eine faktorarme Zahl .
Mit anderen Worten, und , wobei die Anzahl der eindeutigen Primfaktoren von .
Aufgabe
Sie können zwischen folgenden E / A-Formaten wählen:
- Nehmen Sie eine ganze Zahl und geben Sie die faktorarme Zahl . Wenn Sie diesen auswählen, kann entweder 0 oder 1 indiziert sein.
- Nehmen Sie eine positive ganze Zahl und geben Sie die ersten faktorarmen Zahlen aus.
- Drucken Sie die Sequenz auf unbestimmte Zeit.
Sie können Eingaben und Ausgaben mit jeder Standardmethode und in jeder Programmiersprache vornehmen. Beachten Sie dabei, dass diese Lücken standardmäßig verboten sind. Dies ist Codegolf, also gewinnt das kürzeste Einreichen, das sich an die Regeln hält.
Ich werde keine separaten Testfälle einschließen, da die Methoden des Wettbewerbs unterschiedlich sind. Sie können jedoch auf die ersten 100 Begriffe dieser Sequenz verweisen, die OEIS A101934 lautet :
11, 13, 19, 23, 25, 27, 29, 37, 41, 43, 47, 49, 53, 59, 61, 64, 67, 71, 73, 79, 81, 83, 89, 97, 101, 103, 107, 109, 113, 121, 125, 131, 137, 139, 149, 151, 155, 157, 163, 167, 169, 173, 179, 181, 191, 193, 197, 199, 211, 221, 223, 227, 229, 233, 239, 241, 243, 251, 259, 263, 265, 269, 271, 277, 281, 283, 289, 293, 307, 309, 311, 313, 317, 331, 337, 341, 343, 347, 349, 353, 359, 361, 365, 367, 371, 373, 379, 383, 389, 397, 401, 407, 409, 419, 421, 431, 433, 439, 441, 443
Beispielsweise tritt in dieser Sequenz auf, weil (5), (2 und 13) und (2 und 3), also und .
n =
vor jedem Wert einen Zeilenabstand ausgeben ?Antworten:
Brachylog , 21 Bytes
Probieren Sie es online!
Druckt unendlich.
Erläuterung
quelle
Jelly ,
13-12BytesGibt die ersten n faktorarmen Zahlen aus.
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 ,
123119 BytesProbieren Sie es online!
quelle
MATL ,
262422 BytesDruckt die Sequenz auf unbestimmte Zeit.
Probieren Sie es online!
Erläuterung
quelle
Schale , 22 Bytes
Druckt die Sequenz auf unbestimmte Zeit, probiert sie online aus oder zeigt das erste N an !
Alternativ
§oΛ>←t
könnte stattΠtSM<←
.Erläuterung
quelle
Pyth , 14 Bytes
Probieren Sie es hier aus!
Es war ursprünglich ein Vorschlag zu Dopapps Antwort , aber sie sagten mir , ich solle ihn separat posten.
Wie es funktioniert?
quelle
Haskell,
105-86BytesVielen Dank an @Wheat Wizard, @Bruce Forte und @Laikoni für die Einsparung von 19 Bytes.
[n|n<-[2..],d n<d(n-1),d n<d(n+1)] d x=[1|n<-[1..x],x`rem`n<1,all((>0).rem n)[2..n-1]]
quelle
rem
==0
und/=0
kann mit<1
bzw.>0
ersetzt werden.let
, die Definitiond
als Zusatzfunktion in Ordnung ist (siehe Leitfaden für Golf - Regeln ). Auchsum
kann auf Listen verzichtet werden, der Vergleich funktioniert gleich. 86 Bytes: Probieren Sie es online!Oktave ,
878379 BytesDanke an @Cows quack für das Speichern eines Bytes und danke an @Luis Mendo für das Speichern von
drei,sechs Bytes!Druckt die Sequenz auf unbestimmte Zeit.
Probieren Sie es online!
73 Bytes mit vorangestelltem
n =
Wert:Probieren Sie es online!
quelle
f
kannf=@(n)length(unique(factor(n)))
für ein Byte weniger werden.05AB1E ,
1413 BytesGibt die n-te faktorarme Zahl aus (1-indiziert)
Probieren Sie es online!
Erläuterung
quelle
µ
, also werde ich wohl nur auf meine Alternative hinweisen -N<N>Ÿ
kann ersetzen3LN+Í
, wenn das hilft.®XŸN+
funktioniert es auch. Oder0®X)N+
in welchem FallÀ
wäre das nicht nötig. Leider landen sie alle bei der gleichen Byteanzahl.Pyth,
3025 BytesDies ist mein erstes richtiges Pythgolf, daher sind Kommentare sehr willkommen.
Ein großes Dankeschön an Xcoder!
Erläuterung
TIO .
quelle
.f!-.ml{Pb}tZh
(gibt das erste n aus) (.f
ruft die ersten n Werte ab, die eine Bedingung erfüllen,[1,2,3,...]
und verwendet eine VariableZ
,}tZh
generiert den Ganzzahlbereich[Z - 1 ... Z + 1]
, gibt.m
die Liste der Elemente mit minimalem Funktionswert zurück (mitb
),l{Pb
erhält die Anzahl der eindeutigen Teiler,-
verwirftZ
aus der Liste,!
gilt logische Negation)h
is+1
,t
is-1
, whileK
ist eine Variable, die ohne zugewiesen wird=
. Zum BeispielK4
weistK
zu4
. Sie können dann mit darauf zugreifenK
.JavaScript (ES6), 94 Byte
Gibt die N-te faktorarme Zahl mit dem Index 0 zurück.
Probieren Sie es online!
Wie?
Wir definieren zunächst die P () -Funktion, die die Anzahl der eindeutigen Primfaktoren einer bestimmten Ganzzahl zurückgibt.
Der Umhüllungscode lautet nun:
quelle
Japt ,
292726 BytesIch bin damit nicht ganz zufrieden, aber es ist zumindest besser als mein erster Versuch, der über 40 Bytes dauerte!
Gibt die
N
th Zahl in der Sequenz 1-indiziert aus.Versuch es
Erläuterung
Implizite Eingabe einer Ganzzahl
U
.Gibt die erste Ganzzahl
X
zurück, die true zurückgibt, wenn sie die folgende Funktion durchlaufen hat.Ordnen Sie das Array
[-1,0,1]
zuX
.Leiten Sie jedes Element dieses Arrays durch eine Funktion, die zuerst den aktuellen Wert von addiert
X
.Liefert die Länge (
Ê
) der eindeutigen (â
) Primfaktoren (k
) des Ergebnisses.Drehen Sie das resultierende Array um eins nach rechts.
Pop (
o
) das letzte Element ausX
und überprüfen Sie, ob alle verbleibenden Elemente größer als es sind.Wenn ja, dekrementieren Sie
U
und überprüfen Sie, ob es gleich 0 ist.quelle
Python 3 , 97 Bytes
Theoretisch wird die Sequenz auf unbestimmte Zeit ausgedruckt. In der Praxis
g
überschreitet schließlich die Rekursionsgrenze.Probieren Sie es online!
quelle
C (gcc) 126 Bytes
Probieren Sie es online!
quelle
Sauber ,
130123117 BytesEntspricht einer unendlichen Anzahl von Begriffen der Sequenz. Da es sich um verschachtelte Verstehen handelt, kann es die Grafikverkleinerung nicht sehr gut nutzen und ist daher auch bei einem so schlechten Algorithmus recht langsam.
Probieren Sie es online!
quelle
APL NARS, 124 Bytes, 62 Zeichen
Es sollte Antwort bis 1E4 zurückgeben, dann -1 Fehler zurückgeben; es wird angenommen, dass 9..10xargument genug richtige Zahlen hat; Prüfung:
quelle