Sequenzen zusammengesetzter Zahlen
Inspiriert von dieser Frage
Bei einer positiven Ganzzahl n muss Ihr Code die erste ausgeben n zusammengesetzten Zahlen .
Input-Output
Sie können ein Programm oder eine Funktion schreiben. Die Eingabe erfolgt über STDIN oder ein Funktionsargument und die Ausgabe erfolgt über STDOUT oder einen Funktionsrückgabewert.
Die Ausgabe kann eine Liste, ein Array oder eine Zeichenfolge sein.
Beispiele
0 ->
1 -> 4
2 -> 4, 6
3 -> 4, 6, 8
13 -> 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22
Regeln
Standardlücken sind wie immer verboten.
Built-Ins, die Primzahlen oder zusammengesetzte Zahlen erzeugen, sind nicht zulässig.
Eingebaute Zahlen in Bezug auf Primzahlen oder zusammengesetzte Zahlen sind nicht zulässig.
Antworten:
Pyth - 10 Bytes
Eine gültige Antwort. Verwendet den Satz von Wilson .
Probieren Sie es hier online aus .
Alte Antwort
Pyth - 6 Zeichen
Verwendet die eingebaute Primfaktorisierung , nicht die Primprüfung .
Probieren Sie es hier online aus .
quelle
Pyth, 11 Bytes
Erzeugt eine zu große Liste von Produkten aller Kombinationen von [2, n] und Kürzungen.
quelle
1
oder ist2
.TeX, 382 Bytes
Weil du es kannst.
Die Zahl in der letzten Zeile ist die Anzahl der zusammengesetzten Zahlen, die Sie haben möchten.
Dies ist ein einfacher Divisor-Tester.
\d
prüft ob sich#2
teilt#1
.\i
fordert\d
alle möglichen Teiler (dh <#1
).\l
listet die ersten#2
Zahlen auf, für die\i
0 zurückgegeben wird.Ungolfed-Version:
quelle
Python, 57
Weniger golfen:
Die Idee ist, die Menge der zusammengesetzten Zahlen zu generieren, indem alle Paare natürlicher Zahlen mit Ausnahme von 0 und 1 multipliziert werden. Sortieren Sie dann diese Menge und nehmen Sie die ersten
n
Elemente. Es genügt, das kartesische Produkt der Menge mitzunehmen{2, 3, ..., n+2}
, das wir durch Verschiebung erhalten könnenrange(n)
um 2 erhalten können.Golf dies tun wir einen klassischen Golf - Trick von Speichern von zwei Werten
(a,b)
inrange(n)
als Einzelwertk
inrange(n*n)
und extrahieren sie alsa=k/n, b=k%n
.quelle
Java 8,
9897 BytesErweitert, mit Boilerplate:
quelle
R, 53 Bytes
Wie es funktioniert
Dies basiert auch auf Wilsons Theorem und alles, was es tut, ist, einen Bereich von
1:n*n
zusammengesetzten Zahlen nach dem oben erwähnten Theorem zu durchlaufen und zu extrahieren. Ich habe hinzugefügt,+3
weil dern*n
Bereich fürn < 3
ganze Zahlen nicht groß genug istDas einzige Problem bei dieser Lösung ist, dass (leider) R die Genauigkeit für eine ausreichend große Fakultät verliert, daher funktioniert dies nicht richtig für
n > 19
quelle
CJam,
2018 BytesProbieren Sie es online aus
Verwendet keine eingebauten Prim- oder Faktorisierungsoperatoren. Recht brachiale Kraftprüfung für Zahlen, die zusammengesetzt sind.
Eine Beobachtung, die hier verwendet wird, ist, dass wir leicht eine sichere Obergrenze für die Zahlen berechnen können, die wir testen müssen. Da jede zweite Zahl größer als 4 zusammengesetzt ist,
4 + n * 2
handelt es sich um eine Obergrenze für die n-te zusammengesetzte Zahl.Basierend auf einem Vorschlag von @Dennis verwendet die neueste Implementierung tatsächlich
n * 5
die Obergrenze, die viel weniger effizient ist, aber 2 Byte kürzer.Erläuterung:
quelle
Javascript ES6, 88 Zeichen
quelle
f=
für legal.n=>eval('for(r=[],q=2;r.length-n;/^(..+)\\1+$/.test("-".repeat(++q))&&r.push(q))r')
n&&!r[n-1]
: '| Es ist genauso lang wier.length<n
- ein Zeichen kürzer alsr.length!=n
-, aber das soll doch Code Golf sein, oder? : -]Haskell,
4946 BytesAnwendungsbeispiel:
Wie es funktioniert
quelle
F #, 78 Bytes
Erklärt:
quelle
i
zweimal verwenden. Ich kenne mich mit F # nicht so gut aus, aber könntest du es vielleicht nicht benutzenj
?C ++ 109
Ungolfed
quelle
while
durchfor
.Julia, 103 Bytes
Dies verwendet den Satz von Wilson.
Ungolfed:
quelle
ECMAScript 6 -
1079184 BytesDie Funktion gibt ein Array der ersten
n
zusammengesetzten Zahlen zurück.alte Versionen
Ausgabe
quelle
Haskell , 44 Bytes
Stark inspiriert von Nimis früherer Antwort , bei der das Prädikat durch ein um 2 Byte kürzeres Prädikat ersetzt wird, das auf
any
einem punktfreien Lambda anstelle eines verschachtelten Listenverständnisses basiert .Probieren Sie es online!
( Danke an Laikoni für den genauen TIO-Link)
Erläuterung:
quelle