Eine Primzahl ist schwach, wenn die nächste andere Primzahl kleiner ist. Bei Gleichstand ist der Prime nicht schwach.
Zum Beispiel ist 73 eine schwache Primzahl, weil 71 eine Primzahl ist, 75 aber zusammengesetzt ist.
Aufgabe
Schreiben Sie einen Computercode, der bei einer Primzahl größer als 2 als Eingabe bestimmt, ob es sich um eine schwache Primzahl handelt. Dies ist ein Standardentscheidungsproblem , daher sollten Sie für jeden der beiden Fälle (z . B. weak
und not weak
) zwei eindeutige Werte ausgeben .
Dies ist Codegolf, daher gelten die Standardregeln für das Tag.
OEIS
Hier sind die ersten 47 schwachen Primzahlen:
3, 7, 13, 19, 23, 31, 43, 47, 61, 73, 83, 89, 103, 109, 113, 131, 139, 151, 167, 181, 193, 199, 229, 233, 241, 271, 283, 293, 313, 317, 337, 349, 353, 359, 383, 389, 401, 409, 421, 433, 443, 449, 463, 467, 491, 503, 509, 523, 547, 571, 577, 601, 619, 643, 647
Hier ist der OEIS für schwache Primzahlen (sollte zurückkehren weak
) OEIS A051635
Hier ist der OEIS für ausgeglichene Primzahlen (sollte zurückkehren not weak
) OEIS A006562
Hier ist der OEIS für starke Primzahlen (sollte zurückkehren not weak
) OEIS A051634
quelle
not weak
oderstrong
?Antworten:
Gelee , 7 Bytes
Probieren Sie es online!
Erläuterung
Als Bonus wechseln Sie
>
zu=
oder<
suchen nach ausgeglichenen bzw. starken Primzahlen.quelle
>
, nein?Mathematica, 24 Bytes
Die
NextPrime
eingebaute Funktion kann (ab?) Verwendet werden, um die vorherige Primzahl durch Eingabe eines negativen Arguments zu berechnen.quelle
Gelee , 9 Bytes
Returns
1
für schwach und0
für nicht schwach oder ausgeglichen (kehrt1
für einen Eingang2
)Probieren Sie es online!
Wie?
quelle
IIṠ⁼1
nachII>0
nach zu fahrenI<\
) ... Ihre ist jedoch ganz anders. Anscheinend denkst du anders als ich ... EDIT: Pietu1998 ist zurückgekehrt!PHP , 69 Bytes
druckt eine für schwache Primzahl und nichts für nicht schwache Primzahl
Probieren Sie es online!
quelle
Oktave,
9384 BytesDanke an @LuisMendo und @ rahnema1 für das Speichern von Bytes!
Probieren Sie es online!
quelle
i-=1
etc benutzen ? Auchend
wird in der Funktion nicht benötigt; Sie können es in die Fußzeile verschiebenMaxima, 42 Bytes
Probieren Sie es online!
quelle
MATL , 13 Bytes
Andernfalls erfolgt die Ausgabe
1
schwach0
.Probieren Sie es online!
Erläuterung
quelle
GNU APL 1.2, 78 Bytes
∇f N
deklariert eine Funktion, die ein Argument annimmt.(~R∊R∘.×R)/R←1↓⍳N×2
gibt eine Liste aller Primzahlen von 2 bis zum doppelten Argument an. Ich gehe davon aus, dass die nächste Primzahl weniger als das Doppelte des Originals ist. Wenn dies nicht wahr ist,N*2
gibt es N im Quadrat und nimmt die gleiche Anzahl von Bytes (hoffentlich ist das groß genug, um die nächste Primzahl zu überschreiten). (Siehe die Erklärung von Wikipedia für die Funktionsweise der Prim-Finding)X←(R←(...))⍳N
Weist diese Liste dem Vektor zuR
(überschreibt den vorherigen Inhalt), findet den Index der ursprünglichen PrimzahlN
in dieser Liste und weist diesen Index dann zuX
.|R[X-1]-N
berechnet die Differenz zwischen der vorherigen Primzahl (da dieseR
die Primzahlen enthält, dasX-1
dritte Element die vorherige Primzahl istN
) undN
nimmt dann den absoluten Wert an (APL arbeitet von rechts nach links).|R[X+1]-N
tut dasselbe, aber für die nächste Primzahl.(|R[X-1]-N)<|R[X+1]-N
Gibt 1 aus, wenn die vorherige Primzahl näher am Original liegt als die nächste Primzahl, andernfalls 0. Klammern werden für den Vorrang benötigt.∇
beendet die Funktion.quelle
Gelee , 9 Bytes
Probieren Sie es online!
quelle
Pyth, 15 Bytes
Probieren Sie es hier aus.
Verwendet den Pietu1998-Algorithmus.
quelle
Perl 6 , 41 Bytes
Probieren Sie es online!
$_
ist das Argument für die Funktion. Die Zuordnungsfunktion-> \n { $_ + n, * + n ... &is-prime }
nimmt eine Zahln
und gibt eine Folge von Zahlen zurück$_ + n, $_ + 2*n, ...
, die endet, wenn sie eine Primzahl erreicht. Mappen Sie diese Funktion auf die beiden Zahlen1
und-1
erzeugen Sie eine Folge von zwei Folgen. die erste beginnt$_ + 1
und endet mit der ersten Primzahl größer als$_
und die zweite beginnt$_ - 1
und endet mit der ersten Primzahl kleiner als$_
.[>]
Reduziert diese Liste mit zwei Elementen mit dem Größer-als-Operator und gibt true zurück, wenn die erste Sequenz größer (dh länger) als die zweite ist.quelle
Python 2.7 - 120 Bytes
Da Python keine eingebaute Prim-Funktion hat, können wir den Satz von Wilson verwenden, um einen schönen kurzen Prim-Checker zu erhalten. Wilsons Satz besagt, dass eine Zahl genau dann Primzahl ist, wenn (n-1)! ist kongruent zu -1 mod (n). Daher gibt die Funktion i 1 zurück, wenn die Zahl eine Primzahl ist, und 0, wenn dies nicht der Fall ist. Anschließend bestimmt die f-Funktion, ob die nächste Primzahl von dieser Zahl zuerst auftritt, wenn sie nach unten anstatt nach oben erhöht wird. Wenn keine der inkrementierten Zahlen eine Primzahl ist, wird sie nur erneut rekursiv aufgerufen.
Einige Beispiel-E / A
quelle
Python 2 ,
1221081039492 BytesProbieren Sie es online!
Verwendet Pietus Idee ... und spart dann 28 Bytes, indem kürzere Iteratoren der Primliste verwendet werden. dann 2 weitere durch den Austausch
-3*n>0
mit>3*n
(d'oh!)quelle
Regex (die meisten Geschmacksrichtungen), 47 Bytes
Probieren Sie es online!
Nimmt unäre Eingaben auf. Gibt eine Übereinstimmung für schwache Primzahlen aus, keine Übereinstimmung für nicht schwache Primzahlen. Funktioniert in ECMAScript, Perl, PCRE, Python, Ruby.
Erläuterung:
Sei N die Eingabe, A die nächstliegende Primzahl <N und B die nächstliegende Primzahl> N. Die Hauptschwierigkeit eines Regex-Ansatzes für diese Herausforderung besteht darin, dass wir keine Zahlen darstellen können, die größer sind als die Eingabe, wie B. Stattdessen können wir finde das kleinste b so, dass 2b + 1 Primzahl ist und 2b + 1> N, was 2b + 1 = B sicherstellt.
Beachten Sie dann, dass wir A eigentlich nicht finden müssen. Solange eine Primzahl <N näher an N als B liegt, ist N eine schwache Primzahl.
quelle
Oktave, 53 Bytes
Probieren Sie es online!
quelle
JavaScript ES6,
162154 Bytes8 Bytes sparen, basierend auf Jörg Hülsermanns Trick "Nichts in einem Fall drucken". Keine Notwendigkeit
?"Y":"N"
danachone<two
quelle
05AB1E , 17 Bytes
Probieren Sie es online!
Verwendet den Pietu1998-Algorithmus.
quelle
Python 3 , 149 Bytes
Probieren Sie es online!
Ich verwende eine Funktion zur Erzeugung von Primzahlen (oberste Zeile), die dieser alten Stapelaustauschantwort entnommen ist .
quelle
JavaScript, 98 Bytes
Weniger Golphed
Beachten Sie, dass der Testcode nicht überprüft, ob die Eingabe "prime" tatsächlich eine Primzahl ist.
quelle
Braingasmus ,
2322 BytesDrucke
1
für schwache Primzahlen und0
für nicht schwache.Exemplarische Vorgehensweise:
quelle
Julia 0,6, 64 Bytes
quelle
Python 2 , 81 Bytes
Probieren Sie es online!
Verwendet den Satz von Wilson für den Primalitätstest.
quelle