Definitionen
Eine Bijektion von einer Menge
S
zu einer MengeT
ist eine Funktion vonS
bisT
, sodass ein Element inT
von genau einem Element in abgebildet wirdS
.Ein Bijection innerhalb eines Sets
S
ist ein Bijection vonS
bisS
.Die natürlichen Zahlen sind die ganzen Zahlen, die größer oder gleich sind
0
.Eine Teilmenge einer Menge
S
ist eine Menge, bei der sich jedes Element in der Menge auch in befindetS
.Eine richtige Teilmenge einer Menge
S
ist eine Menge, bei der es sich um eine TeilmengeS
handelt, die nicht gleich istS
.
Aufgabe
Schreiben Sie ein Programm / eine Funktion, die eine natürliche Zahl als Eingabe verwendet und eine natürliche Zahl ausgibt. Es muss eine Bijektion sein, und das Bild der Primzahlen unter dem Programm / Funktion, {f(p) : p ∈ ℙ}
muss eine echte Teilmenge von sein ℙ
, wo ℙ
die Primzahlen sind.
Wertung
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt. Es gelten Standardlücken .
Antworten:
Mathematica,
5448 BytesDefiniert die folgende Bijektion:
Die Grundidee besteht darin, jede Primzahl der nächsten zuzuordnen, um sicherzustellen, dass sie einer richtigen Teilmenge zugeordnet sind. Dies führt zu einer "Lücke" bei 2 . Um diese Lücke zu füllen, wollen wir 4 bis 2 und dann die jeweils andere zusammengesetzte Zahl der vorherigen zusammengesetzten Zahl zuordnen, um die Lücke zu "sprudeln". Da 2 und 3 die einzigen zwei benachbarten Primzahlen sind, können wir beide Zuordnungen als " n-1 " ausdrücken, oder wenn dies eine Primzahl ist, dann n-2 . Schließlich sendet dieses Mapping 1 zu 0 und wir lassen es 0 zu 1 zurücksenden, indem wir den absoluten Wert von n-1 nehmen .
quelle
0
?MATL , 21 Bytes
Vielen Dank an Emigna für das Erkennen eines Fehlers, der jetzt korrigiert wurde
Probieren Sie es online!
Dies implementiert die folgende Bijektion. Schreibe die Primzahlen in eine Reihe und die Nicht-Primzahlen unten:
Dann erhalten Sie die Ausgabe, indem Sie dem Pfeil von der Eingabe folgen:
Erklärter Code
quelle
Jelly , 14 Bytes
Probieren Sie es online!
Verwendet Luis 'Algorithmus.
quelle
JavaScript (ES6),
827775 ByteImplementiert dieselbe Logik wie Luis Mendos Antwort .
Formatiert und kommentiert
Demo
Code-Snippet anzeigen
quelle
Gelee , 12 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle