Sexy Primes sind Zahlenpaare (n, m)
wie n
und m
beide sind Primzahlen und m = n + 6
.
Sie müssen eine Funktion erstellen, die eine Ganzzahl akzeptiert, nach sexy Primzahlen von 0 bis zu dieser Ganzzahl suchen und ein Array von Arrays zurückgeben.
Zum Beispiel listSexy(30)
muss zurückkehren [[5,11], [7,13], [11,17], [13,19], [17,23], [23,29]]
oder ein gleichwertiges.
Dies ist Code-Golf, also gewinnt das Programm mit dem kürzesten Bytecount!
Antworten:
MATLAB 32
n ist deine Nummer
quelle
isprime
. Nicht dass die Operation es beabsichtigt hätte.J,
343331323937 ZeichenVerlor einen Charakter, der beide Primzahlen unter dem Limit hielt ... und weitere 7, die eine Funktion deklarierten.
Verwendungszweck:
Bearbeiten
Es scheint, als würden viele der neuen Antworten keine Funktionen erstellen, Eingaben vornehmen oder beide Zahlen im Paar so einschränken, dass sie darunter liegen.
n
Wenn ich diese Einschränkungen ebenfalls ignoriere, kann ich auf 28 Zeichen reduzieren :quelle
Mathematica , 35
quelle
GolfScript, 32 Zeichen
Da das Ausgabeformat nicht angegeben wurde, gibt der obige Code die untere Primzahl jedes Paares aus. Somit ist eine Zahl
x
enthalten, wennx
undx+6
beide Primzahlen sind und beide unten liegenn
. Die Eingabe erfolgt als einzelne Nummer auf STDIN.quelle
K3 / Kona , 45
.
Und die gleiche Lösung in der aktuellen Inkarnation von K, die mit der K3-Lösung identisch ist, mit der Ausnahme, dass es keinen eingebauten Mod-Operator gibt, der ungefähr 59 Zeichen für 59 hinzufügt
quelle
Python (
93 90 9995)Yay für schnelle und schmutzige
isprime
Funktionen!quelle
1
stattdessenTrue
werden Sie 3 Zeichen speichern ...[]
inall()
nicht benötigt (zumindest in Python 2.7).Oktave 39
Meine MATLAB-Antwort wurde geändert, um den neuen (nervigen) Regeln zu entsprechen.
n
ist dein Wert.Kann hier getestet werden
quelle
C
1029995 ZeichenDas Zurückgeben eines Arrays in C sollten Sie vermeiden. Die Funktion
s
erhält also das Limitn
und einen Zeiger auf ein Array von Ganzzahlen und füllt es mit den Daten. Jedes Paar sexy Primzahlen befindet sich an zwei Positionen im Array. Alsoo[0]=5
,o[1]=11
,o[2]=7
,o[3]=13
. Die Funktion geht davon aus, dass das Array groß genug ist.quelle
R, 83 Zeichen
Verwendungszweck:
quelle
Ruby
7574Die neue Version verwendet die Haupttestmethode von Artem Ice :
Online-Test: http://ideone.com/yaOdn
quelle
Ruby,
99 88 86 84 8278Beispielausgabe:
[[5, 11], [7, 13], [11, 17], [13, 19], [17, 23], [23, 29], [31, 37], [37, 43], [41, 47], [47, 53], [53, 59], [61, 67], [67, 73], [73, 79], [83, 89]]
quelle
Python,
137 132 126 122116Mir ist klar, dass dies ein kleiner Fehler ist, aber es ist meine erste Antwort. Warum also nicht?
Verwenden von Listenverständnissen sowie der Tatsache, dass
[] = False
f(x)
gibt tatsächlich alle Faktoren von zurückx
, und Sie können dann die Primzahl daraus herausfinden.quelle
f(x)
in verwandelnf=lambda x:not[y for y in range(2,x)if x%y==0]
, um einige Zeichen zu speichern. Sie können auch dasif
s am Ende Ihres Listenverständnisses mit reduzierenf(x)&f(y)&(x-6==y)
.a=lambda x,y,z:(value here)
ist das gleiche wiedef a(x,y,z):return (value here)
.JavaScript (1 Tweet = 140 Zeichen)
Hier ist es:
function t(n,i){for(i=2;i<n;i++)if(!(n%i))return!1;return!0}function s(n,p){for(p=[],i=2;i<n-6;i++)if(t(i)&&t(i+6))p.push([i,i+6]);return p}
Versuchen Sie es
s(30)
.quelle
J, 25 Zeichen
i.n
erzeugt einen Bereich von [0, n)(,+&6)"0
nimmt jede ganze Zahln
in der Liste und bildet ein Paarn, n+6
(#~ condition)
ist im Grunde genommen einefilter
, und die Bedingung in diesem Fall*/"1@p:~&1
prüft nur, ob ein Paar nur aus Primzahlen besteht.quelle
C # (279 Zeichen)
Im Grunde ist es Saumils Lösung mit ein paar Verbesserungen. Ich habe nicht
genugRuf, um Kommentare abzugeben, also ...Ausgabe:
quelle
Perl: 73 char
Verwendungszweck:
Ausgabe:
quelle
C # 295
Online-Test: http://ideone.com/4PwTW (in diesem Test habe ich
int.Parse(a[0])
den tatsächlichen int-Wert ersetzt, da ich keine Befehlszeilenargumente für Programme liefern kann, die auf ideone.com ausgeführt werden)quelle
Mathematica -
6948 ZeichenAngenommen, m wurde ein Wert zugewiesen
quelle
Scala (82)
Beispielausgabe:
Vector(List(5, 11), List(7, 13), List(11, 17), List(13, 19), List(17, 23), List(23, 29), List(31, 37), List(37, 43), List(41, 47), List(47, 53), List(53, 59), List(61, 67), List(67, 73), List(73, 79), List(83, 89))
quelle
Faktor 140
Diese Sprache macht Spaß und ist interessant. Mein erstes Drehbuch.
Verwendungszweck:
quelle
PARI / GP (62 Zeichen)
Beispiel:
quelle
C # (
321303290 Zeichen)using System;namespace X{public class P{ static int l=100;static void Main(){F(0);}static bool I(int n){bool b=true;if(n==1){b=false;}for(int i=2;i<n;++i){if(n%i==0){b=false;break;}}return b;}static void F(int p){if((p+6)<=l){int m=p+6;if(I(m)&&I(p)){Console.WriteLine(m+","+p);}F(p+1);}}}}
Ausgabe:
11,5
13,7
17,11
19,13
23,17
29,23
37,31
43,37
47,41
53,47
59,53
67,61
73,67
79,73
89,83
quelle
class P
anstelle vonclass Program
).Haskell (65 Zeichen)
Die Ausgabe:
Über die MATLAB-Antwort hier:
(Ich habe meinen ganzen Repräsentanten für ein Kopfgeld ausgegeben, kann also noch keinen Kommentar abgeben) . Google sagt: "Die Isprime-Funktion des Matlab ... basiert auf dem probabilistischen Miller-Rabin". Es scheint also, dass der MATLAB-Eintrag disqualifiziert werden sollte.
quelle
R
8581 ZeichenBeispiellauf:
quelle
PHP, 106 Bytes
Das Programm druckt Paare
n,n+6
, die durch Zeilenumbrüche begrenzt sind. Laufen Sie mit-r
.Ich habe meine is_prime-Funktion geändert (und ein Byte gespeichert), sodass sie
0
für Primzahlen zum Golfen auf dem Elvis zurückkehrt.quelle
Gelee , 13 Bytes (nicht konkurrierend)
Probieren Sie es online aus!
Erweiterte Erklärung:
quelle
Obj-C 64 Zeichen
isPrime wird separat implementiert
quelle
isPrime
die nicht Teil der Sprache oder Standardbibliothek ist, müssen Sie die Zeichenanzahl für diese Funktion als Teil Ihrer Punktzahl angeben.