Eine Sphenic Number ist eine Zahl, die aus genau drei verschiedenen Primzahlen besteht. Die ersten sphenischen Zahlen sind 30, 42, 66, 70, 78, 102, 105, 110, 114
. Dies ist die Sequenz A007304 im OEIS.
Deine Aufgabe:
Schreiben Sie ein Programm oder eine Funktion, um festzustellen, ob eine eingegebene Ganzzahl eine sphenische Zahl ist.
Eingang:
Eine ganze Zahl zwischen 0 und 10 ^ 9, die eine sphenische Zahl sein kann oder nicht.
Ausgabe:
Ein wahrer / falscher Wert, der angibt, ob die Eingabe eine sphenische Zahl ist.
Beispiele:
30 -> true
121 -> false
231 -> true
154 -> true
4 -> false
402 -> true
79 -> false
0 -> false
60 -> false
64 -> false
8 -> false
210 -> false
Wertung:
Dies ist Code-Golf , der kürzeste Code in Bytes gewinnt.
code-golf
number
decision-problem
primes
Gryphon - Setzen Sie Monica wieder ein
quelle
quelle
60
eine sphenische Zahl?2 × 2 × 3 × 5
60
ist keine sphenische Zahl. (Warten auf OP-Klärung)Antworten:
Brachylog ,
63 BytesProbieren Sie es online!
Erläuterung
quelle
≠
.Ṫ
auch.Ṫ
ist allerdings kein eingebautes Prädikat; es ist eine eingebaute Variable: eine Liste von 3 variablen Elementen. Es ist eine ziemlich nützliche Variable mit Einschränkungen für viele verschiedene Herausforderungen.Bash, 43 Bytes
Probieren Sie es online!
Eingabe über Kommandozeilenargument, Ausgabe
0
oder1
nach stdout.Ziemlich selbsterklärend; analysiert die Ausgabe von
factor
, um zu überprüfen, ob der erste und der zweite Faktor unterschiedlich sind, der zweite und der dritte (sie sind in sortierter Reihenfolge, dies ist also ausreichend) und es gibt vier Felder (die Eingabenummer und die drei Faktoren).quelle
MATL , 7 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
X=
ist das traurigste, was ich je gesehen habe.C
8878126587773 + 4 (lm
) = 77 BytesUngolfed kommentierte Erklärung:
Probieren Sie es online!
quelle
i*1.0/l
statt der Besetzung zu schweben. (Und dal
,j
global sind sie auf 0 kostenlos initialisiert sind, brauchen Sie nicht , das zu tun , wenn die Funktion nur einmal aufgerufen wird nicht sicher , was die Regel für das ist..)CJam , 11 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Basierend auf meiner MATL-Antwort.
quelle
Gelee , 8 Bytes
Probieren Sie es online!
Verwendet den Algorithmus von Luis Mendo.
Erläuterung:
quelle
Schale , 6 Bytes
Probieren Sie es online!
Gibt 1 für sphenische Zahlen und 0 sonst zurück.
Erläuterung
Im letzten Abschnitt bedeutet Kongruenz zwischen zwei Listen die gleiche Länge und die gleiche Verteilung von Wahrheits- / Falschheitswerten. In diesem Fall überprüfen wir, ob unser Ergebnis aus zwei wahren (dh nicht null) Werten besteht.
quelle
Mathematica, 31 Bytes
quelle
PrimeNu
dies genauso gutPrimeOmega
und ist kürzer.Gelee , 6 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
05AB1E ,
75 BytesProbieren Sie es online!
Verwendet Dennis 'Algorithmus.
quelle
Eigentlich 7 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Haskell , 59 Bytes
Probieren Sie es online!
quelle
J , 15 Bytes
Probieren Sie es online!
Erläuterung
quelle
Dyalog APL, 26 Bytes
Probieren Sie es online!
quelle
Ruby,
814946 BytesBeinhaltet 6 Bytes für Befehlszeilenoptionen
-rprime
.Probieren Sie es online!
quelle
Python 3 ,
5453 BytesVielen Dank an @xnor für das Golfen ab 1 Byte!
Probieren Sie es online!
quelle
k*k%n
anstattn%k**2
C,
91102 Bytes, korrigiert (erneut), golfen und diesmal auf Echtheit getestet:/ * Das funktioniert auch in 93 Bytes, aber da ich die Standardregeln vergessen habe, die den int-Standardtyp für dynamische Variablen ausschließen, und die impliziten Rückgabewerte ohne Zuweisungen nicht zulassen, nehme ich das nicht an:
(Wer hat gesagt, ich wüsste etwas über C? ;-)
Hier ist der Testrahmen mit Shell-Skript in Kommentaren:
Ich habe die vorherige Antwort von betseg ausgeliehen, um zu meiner Version zu gelangen.
Dies ist meine Version des Betseg-Algorithmus, mit dem ich zu meiner Lösung gekommen bin:
quelle
[betseg's answer](https://codegolf.stackexchange.com/a/135203/65836)
. Sie können auch auf "Bearbeiten" in seiner Antwort klicken, um eine Änderung vorzuschlagen, wenn Sie möchten, die die Erklärung enthalten würde - keine Zusicherung, ob sie genehmigt wird oder nicht.Pyth, 9 Bytes
Probieren Sie es hier aus.
quelle
Javascript (ES6), 87 Byte
Beispielcode-Snippet:
quelle
Python 2 ,
135121 BytesProbieren Sie es online!
quelle
Python 2 , 59 Bytes
Probieren Sie es online!
quelle
J, 23 Bytes
Probieren Sie es online!
Umgang mit 8 und 0 im Grunde ruiniert dieses ...
q:
gibt alle Primfaktoren an, aber behandelt nicht 0. der Rest sagt nur "die eindeutigen Faktoren sollten den Faktoren entsprechen" und "die Anzahl von ihnen sollte 3 sein"quelle
60
8
.(6=]#@,~.)@q:
als mögliche LösungJapt , 14 Bytes
Probieren Sie es online!
quelle
Number.k()
, die keine Auswirkung hat. Überprüfen Sie einfach, ob der Eingang 3 Primfaktoren und nicht 3 unterschiedliche Primfaktoren enthält. Das würde bedeuten, dass8
(mit drei Hauptfaktoren :) bestanden2, 2, 2
würde, obwohl ich nicht in A007304 bin8
diesem Grund habe ich gerade zu den Testfällen hinzugefügt .Mathematica, 44 Bytes
Probieren Sie es online!
quelle
VB.NET (.NET 4.5), 104 Byte
Ich benutze die Funktion von VB, bei der der Funktionsname auch eine Variable ist. Da es am Ende der Ausführung keine return-Anweisung gibt, wird stattdessen der Wert der 'function' übergeben.
Das Letzte
A=A=3
kann gedacht werdenreturn (A == 3)
in C-basierten Sprachen .Beginnt bei 2 und zieht iterativ die Primzahlen ab. Da ich mit den kleinsten Primzahlen beginne, kann sie nicht durch eine zusammengesetzte Zahl geteilt werden.
Ich werde ein zweites Mal versuchen, mich durch dieselbe Primzahl zu teilen. Wenn dies der Fall ist (z. B. wie 60 durch 2 geteilt wird), wird die Anzahl der Primzahlen auf 4 gesetzt (über dem für eine sphenische Zahl zulässigen Höchstwert).
Probieren Sie es online!
quelle
Dyalog APL,
514948464543 BytesProbieren Sie es online!(geändert, damit es auf TryAPL ausgeführt werden kann)
Ich wollte einen einreichen, der sich überhaupt nicht auf den dfns-Namespace stützt, auch wenn er lang ist .
quelle
J
15,1419 BytesVorheriger Versuch:
3&(=#@~.@q:)~*
Aktuelle Version:
(*/*3=#)@~:@q: ::0:
Wie es funktioniert:
Dies gilt für die Fälle 0, 8 und 60, die die vorherige Version nicht erfüllt hat.
quelle
Mathematica,
6657 BytesDefiniert eine anonyme Funktion.
ist Transponieren .Erläuterung
FactorInteger
gibt eine Liste von Faktorenpaaren und deren Exponenten an. EgFactorInteger[2250]=={{2,1},{3,2},{5,3}}
. Diese wird zur einfachen Bedienung transponiert und der Funktion zugeführtLength@#1==3&&And@@EqualTo[1]/@#2&
. Der erste TeilLength@#1==3
prüft, ob es 3 eindeutige Faktoren gibt, während der zweiteAnd@@EqualTo[1]/@#2
prüft, ob alle Exponenten 1 sind.quelle
PHP, 66 Bytes:
Laufen Sie als Pipe mit
-nR
oder versuchen Sie es online .Endlosschleife für
0
;$n&&
vor--$n
dem einlegen fixieren.Nervenzusammenbruch
Beispiel
Argument =
30
:Primfaktoren sind
2
,3
und5
andere Teiler sind
1
, 2 * 3 =6
, 2 * 5 =10
und 3 * 5 =15
ihr Produkt:
1*2*3*5*6*10*15
ist27000
==30**3
quelle
Python 99 Bytes
Erste Einreichung. Vergib mir, wenn ich etwas falsch gemacht habe. Ein bisschen albern, zählt die Anzahl der Faktoren
n
und ist dann die Anzahl der Malen
durch jeden teilbar (durch Addition von 10 ** 9).Ich bin mir ziemlich sicher, dass es ein paar einfache Möglichkeiten gibt, ~ 10-20 Zeichen abzuschneiden, aber ich habe es nicht getan.
Auch dies ist bei 10 ** 9 unlösbar langsam. Könnte durch den Wechsel zu in Ordnung gebracht werden , da wir nur zur Quadratwurzel von gehen müssen .
'...a+=1\n'*n
'...a+=1\n'*n**.5
n
quelle