Definieren Sie eine 1-indizierte Sequenz wie folgt:
A083569(1) = 1
A083569(n)
wobein
eine ganze Zahl größer ist als1
, ist die kleinste ganze Zahl m, die nicht früher auftritt, so dassm+n
es sich um eine Primzahl handelt.
Ihre Aufgabe ist es, aufzunehmen n
und zurückzukehren A083569(n)
.
n A083569(n)
1 1
2 3
3 2
4 7
5 6
6 5
7 4
8 9
9 8
10 13
11 12
12 11
13 10
14 15
15 14
16 21
17 20
18 19
19 18
20 17
Weitere Testfälle finden Sie hier . Die Originalsequenz zu OEIS finden Sie hier .
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt. Es gelten Standardlücken .
Antworten:
Haskell ,
878683807469 BytesVielen Dank an xnor für die Vorschläge zu Änderungen, mit denen 3 Byte eingespart wurden!
Probieren Sie es online!
Ich bin neu in Haskell und Haskell Golf, Feedback wird geschätzt!
Erläuterung
Wir definieren eine Funktion
f n
. Wir definierenf n
als erstes Element!!0
der Liste:Aufgeschlüsselt ist das:
quelle
[2,3..]
kann nur sein[2..]
, es wird standardmäßig um 1 hochgezählt. Es gibt eine eingebautenotElem
.notElem
aber der erste Tipp war hilfreich und ich werde sicherstellen, dass der zweite in meiner Gesäßtasche bleibt.f 1
falsch wird. Sie sollte am 1.Jelly ,
16-15BytesDies setzt A083569 (n) ≤ n² voraus (die Sequenz scheint linear zu wachsen).
Probieren Sie es online!
Wie es funktioniert
quelle
A083569(n)
ist höchstens dien
th-Primzahl größer alsn
nach ihrer Definition, die höchstens die2n
th-Primzahl ist, die (fürn≥3
) weniger ist als4n*log(n)
nach Ergebnissen von Rosser-Schönfeld.Pyth -
181715 BytesVielen Dank an @isaacg, dass du mir zwei Bytes gespart hast!
Zurück auf dieser Seite, nach einer Weile beschäftigt, wird hoffentlich dieses weiter Golf spielen.
Probieren Sie es hier online aus .
quelle
-TY
ist ein Byte kürzer als!/YT
und in den gleichen Fällen wahr.+hdT
zu+Th
.C # (.NET Core) , 169 Byte
Probieren Sie es online!
Bei weitem die meisten ineffizienter Weg , um die Ergebnisse zu berechnen, bitte so Refrain aus der Berechnung
f(n)
fürn>=30
mit diesem Code. Der erste Schritt ist , um rekursiv die Werte zu berechnen , die vonf(1)
zuf(n-1)
und dann zu berechnen , gehtf(n)
durch die ersten Benutzer ,i
so dass einen+i
Primzahl ist , undi
ist nicht auf der vorherige Werte - Liste.quelle
x86-64-Assembly,
57-55ByteIch bin neu im Golfsport, daher sind Kommentare / Rückmeldungen erwünscht.
Hinweis: Dies ist für die Länge des Maschinencodes optimiert, nicht für die Länge der Quelle.
Definiert eine Funktion unter Verwendung der Standardkonvention (dh Rückgabewert in eax, erstes Argument in edi, alle vom Aufrufer gespeicherten Register außer ebx), die eine vorzeichenlose 32-Bit-Ganzzahl verwendet und das kleinste m usw. zurückgibt.
Quelle:
Probieren Sie es online!
quelle
Clojure,
158155 BytesDies könnte noch etwas Fett haben, mit dem ich nicht ganz zufrieden bin,
(+ 1 i j)
aber dies war der einfachste Weg, mit dem Basisfalln = 1
und dem Rest umzugehen.((set r)j)
Gibt zurück,nil
wennj
es sich nicht in der Menge befindet, und(seq ())
in einer leeren Liste gibt es auch null zurück. Berechnetn = 1000
in 48 Sekunden.Update: entfernt
nil
von=
Kontrolle , da der Code korrekt auch ohne es funktioniert.quelle
Ruby , 62 + 8 = 70 Bytes
Verwendet die
-rprime
Flagge.Probieren Sie es online!
quelle
Python,
194170110 Bytes84 Bytes von Leaky Nun gespeichert
2 Bytes von Mathmandan gespeichert
Definiert eine Funktion s (n), die eine Zahl als Eingabe annimmt und A083569 (n) zurückgibt.
Probieren Sie es online
quelle
p=lambda n:any(n%i<1for i in range(2,n))
für die Primalitätsprüfung verwenden.while(i in a)|any(...