Überraschenderweise glaube ich nicht, dass wir eine Code-Golf- Frage haben, um festzustellen, ob eine Zahl semiprime ist .
Ein Semiprime ist eine natürliche Zahl, die aus zwei (nicht unbedingt unterschiedlichen) Primzahlen besteht.
Einfach genug, aber ein bemerkenswert wichtiges Konzept.
Bestimmen Sie bei einer positiven Ganzzahl, ob es sich um ein Semiprime handelt. Ihre Ausgabe kann in beliebiger Form erfolgen, sofern sie für alle wahrheitsgemäßen oder falschen Werte dieselbe Ausgabe liefert. Sie können auch davon ausgehen, dass Ihre Eingabe ausreichend klein ist, damit Leistung oder Überlauf kein Problem darstellen.
Testfälle:
input -> output
1 -> false
2 -> false
3 -> false
4 -> true
6 -> true
8 -> false
30 -> false (5 * 3 * 2), note it must be EXACTLY 2 (non-distinct) primes
49 -> true (7 * 7) still technically 2 primes
95 -> true
25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216869987549182422433637259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133844143603833904414952634432190114657544454178424020924616515723350778707749817125772467962926386356373289912154831438167899885040445364023527381951378636564391212010397122822120720357
-> true, and go call someone, you just cracked RSA-2048
Dies ist Code-Golf , daher gelten die Standardregeln!
Antworten:
Brachylog , 2 Bytes
Grundsätzlich eine Portierung aus Fatalizes Antwort auf die Sphenic-Number-Challenge.
Probieren Sie es online!
Wie?
quelle
Ċ
ist eine integrierte Liste von zwei Variablen. Da es sich um eine deklarative Sprache handelt, ist die Ausgabe standardmäßig ein Test für die Zufriedenheit (z. B.ḋ
würde sie alleintrue.
für nicht negative ganze Zahlen ausgegeben ).c6 eb
.Schale , 4 Bytes
Schau ma kein Unicode!
Probieren Sie es online!
Wie?
quelle
Mathematica, 16 Bytes
PrimeOmega
zählt die Anzahl der Primfaktoren und zählt die Multiplizität.quelle
SemiprimeQ
PrimeOmega
Pyth , 4 Bytes
Testsuite .
Wie?
quelle
Python 3 , 54 Bytes
Probieren Sie es online!
Die vorherige verson hatte einige Runden Probleme auf großen Würfel Zahlen (
125
,343
usw.)Diese berechnet die Menge von Teilern (nicht nur Primzahlen), wenn es hat
1
oder2
es zurückgibtTrue
.Die einzige Ausnahme ist, wenn eine Zahl mehr als zwei Primfaktoren, aber nur zwei Teiler enthält. In diesem Fall ist es ein perfekter Würfel einer Primzahl (seine Teiler sind die Kubikwurzel und die Kubikwurzel im Quadrat).
x**3==n
In diesem Fall wird durch Hinzufügen von Eins zum Kubikwurzeleintrag die Summe auf 3 hochgezählt und das falsch-positive Ergebnis gestoppt. danke Jonathan Allan für das Schreiben mit dieser schönen Erklärungquelle
n**(1/3)%1>0<sum...
sollte arbeiten.Ruby ,
5648 BytesProbieren Sie es online!
Wie es funktioniert:
Vielen Dank, Value Ink, für die Idee, mit der 8 Byte eingespart wurden.
quelle
c
bei 0 beginnen und hochzählen, anstatt es zu einem Array zu machen, zu dem Sie alle Faktoren hinzufügen? Auf diese Weise kann die Notwendigkeit herausnehmen zu verwenden ,size
am EndeMathematica,
3129 Bytesquelle
Neim , 4 Bytes
Probieren Sie es online!
quelle
𝐏
,𝐥
,δ
, und𝔼
als Single-Byte.Python 2 , 67 Bytes
Probieren Sie es online!
-10 Bytes dank @JonathanAllan!
Credit for the Prime factorization algorithm goes to Dennis (in the initial version)
quelle
JavaScript (ES6), 47 bytes
Gibt einen Booleschen Wert zurück.
Demo
Code-Snippet anzeigen
quelle
Mathematica 32 Bytes
Dank ngenesis für 1 Byte gespeichert
quelle
;;
instead ofAll
.Jelly, 5 bytes
Try it online!
Explanation
quelle
Actually, 4 bytes
Try it online!
quelle
05AB1E, 4 bytes
Try it online!
How?
quelle
MATL, 5 bytes
Try it online!
Explanation
Yf
- Prime factors.n
- Length.2=
- Is equal to 2?quelle
Dyalog APL, 18 bytes
Try it online!
How?
⎕CY'dfns'
- importpco
3pco⎕
- runpco
on input with left argument 3 (prime factors)2=≢
- length = 2?quelle
Gaia, 4 bytes
4 bytes seems to be a common length, I wonder why... :P
Try it online!
Explanation
quelle
Python mit SymPy 1.1.1 ,
5744 bytes-13 Bytes dank Alephalpha (benutze 1.1.1's
primeomega
)Probieren Sie es online!
quelle
lambda n:primeomega(n)==2
R , 67 Bytes
Probieren Sie es online!
quelle
Ruby, 35+8 = 43 bytes
Uses the
-rprime
flag to unlock theprime_division
function.Try it online!
quelle
Java 8,
6961 bytes-8 bytes thanks to @Nevay.
Try it here.
quelle
else++r;
) entfernen , um 8 Bytes zu sparenn->{int r=1,c=2;for(;r++<n;)for(;n%r<1;n/=r)c--;return c==0;}
.Python 2 ,
7565 BytesProbieren Sie es online!
Die Antwort von xnor auf den ursprünglichen Primfaktor-Code ist vollständig .
quelle
C #, 112 Bytes
Mit angewandter Formatierung:
Und als Testprogramm:
Welches hat die Ausgabe:
quelle
Pari / GP , 17 Bytes
Probieren Sie es online!
quelle
Netzhaut , 45 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
In Unary konvertieren.
Versuchen Sie, zwei Faktoren zu finden.
Stellen Sie sicher, dass beide Faktoren richtig sind.
Stellen Sie sicher, dass zwei Faktoren gefunden wurden.
quelle
Python 2, 90 Bytes
f
Nimmt eine ganze Zahln
größer oder gleich,1
wird ein boolescher Wert zurückgegeben.Probieren Sie es online!
Testfälle:
quelle
J , 6 Bytes
5 Bytes funktionieren einmalig:
Ich glaube, ich brauche sechs, wenn ich die Funktion definiere:
quelle
Pyke , 5 Bytes
Probieren Sie es hier aus!
quelle
Japt ,
65 BytesTesten Sie es online
Erläuterung
Macht so ziemlich das Gleiche wie die meisten anderen Antworten:
k
erhält die Reihe der Primfaktoren,Ê
erhält ihre Länge und¥
prüft auf Gleichheit mit2
.quelle
÷k o)j
funktioniert auch, leider ist es gleich lang :-(Perl 6 , 43 Bytes
Probieren Sie es online!
f
Ist der kleinste Faktor größer als 1 des Eingabearguments$_
oder ist er 1. Der Rückgabewert der Funktion ist wahr, wenn wahr ist (dh nicht ) UND das durch den Faktor geteilte Eingabeargument ist prim.Nil
$_
f
Nil
Wenn
$_
selbst eine Primzahl ist, dannf
wird gleich sein$_
, und$_ / f
ist 1, was nicht prim ist, so dass die Formel auch in diesem Fall funktioniert.quelle