Der Solovay-Strassen-Test (nach Robert Solovay und Volker Strassen) ist ein probabilistischer Primzahltest. Der Test prüft für eine ungerade Zahl n, ob sie eine Primzahl oder das Produkt mehrerer Faktoren ist. Für den Fall, dass der Test als Antwort liefert, dass es sich bei n nicht um eine Primzahl handelt, liefert der Test jedoch im Allgemeinen keinen Faktor der Zahl n.
Der Test ist ein probabilistischer Algorithmus. Das heißt, das Testergebnis kann mit einer gewissen Wahrscheinlichkeit falsch sein. Diese Wahrscheinlichkeit kann aber durch hinreichend häufige Wiederholung beliebig gering gehalten werden.
Der Test fällt in die Klasse der Monte-Carlo-Algorithmen d. h. für den Test wird ein Zufallsexperiment benötigt.
Er basiert ähnlich wie der Miller-Rabin-Test auf einer Eigenschaft, die Primzahlen betrifft.
Inhaltsverzeichnis |

gelten. Gilt dies nicht, kann also n keine Primzahl sein (und der Test ist dann hier beendet).Um die Güte des Solovay-Strassen-Tests zu bewerten, muss unterschieden werden, ob n eine Primzahl ist oder nicht.
Um die Güte des Tests für Nichtprimzahlen zu erhöhen, wird der Test mit unabhängig gewählten zufälligen a-Werten hinreichend oft wiederholt. Wenn der Test k mal wiederholt wird, dann ist die Wahrscheinlichkeit dass in allen k Wiederholungen das Ergebnis Primzahl lautet (obwohl n keine Primzahl ist), kleiner als 1 / 2k. Dies ist eine pessimistische Schätzung - in den meisten Fällen wird die Güte wesentlich besser sein.
Der Solovay-Strassen-Test ist effizient, da der ggT, die Potenzen und das Jacobi-Symbol effizient berechnet werden können.
Am Beispiel der zusammengesetzten Zahl n = 91 (einer Pseudoprimzahl) werden die möglichen Abläufe des Tests gezeigt:
| Ist 91 eine Primzahl? | |||
| Fall 1: a = 7 | Fall 2: a=23 | Fall 3: a= 17 | Fall 4: a=29 |
g = ggT(7,91) = 7 => keine Primzahl |
g = ggT(23,91) = 1
b = 23(91 − 1) / 2 mod 91 = 64
=>
keine Primzahl
|
g = ggT(17,91) = 1
b = 17(91 − 1) / 2 mod 91 = -1
j = J(17,91) = -1
j = b
=>
Primzahl
|
g = ggT(29,91) = 1
b = 29(91 − 1) / 2 mod 91 = 1
j = J(29,91) = 1
j = b
=>
Primzahl
|
Die Wahrscheinlichkeit an:
Sei n > 2 eine ungerade Nichtprimzahl. Eine Zahl a mit ggT(a,n) = 1 heißt falscher Zeuge für die Primalität von n bezüglich des Solovay-Strassen-Tests, falls

Die Menge der falschen Zeugen bildet eine Untergruppe zur multiplikativen Gruppe
mit Ordnung
(φ bezeichnet die Eulersche φ-Funktion).
Da φ(n) < n gilt, sind höchstens die Hälfte aller zur Auswahl stehenden Zahlen a falsche Zeugen.
Der Solovay-Strassen-Test beruht auf zwei Punkten:

oder

zutrifft.

Da man bei den zu testenden Zahlen nicht davon ausgehen darf, dass es sich um Primzahlen handelt, benutzt man das Jacobi-Symbol. Damit fallen auch jene eulerschen Pseudoprimzahlen raus, für die
nicht gilt.