Alle,Stackoverflow Ausnahme beim Testen Miller Rabin
ich einen Code implementiert haben, die zwei zufällige Primzahlen und die Multiplikation dieser zwei Zahlen erzeugt sollte die Miller Rabin Primzahltest. Allerdings läuft mein Code die ganze Zeit über, während er versucht, eine Nummer zu finden, die den Miller-Rabintest besteht und mit einer Stackoverflow-Ausnahme endet. Hier ist der Code:
private void populateRandomPrimes()
{
onePrimeValue = RandomPrime.getValue();
do
{
secondPrimeValue= RandomPrime.getValue();
}while(onePrimeValue == secondPrimeValue);
BigInteger calcNum = new BigInteger(Integer.toString(onePrimeValue*secondPrimeValue));
try
{
**if (calcNum.isProbablePrime(20))**
populateMultiplicativeForPlayer();
else
populateRandomPrimes();
}
catch (Exception io)
{
io.printStackTrace();
}
}
In dem obigen Code:
1> RandomPrime Klasse gibt eine Zufalls prime Zahl
2> Sowohl onePrimeValue und secondPrimeValue sollte verschiedene
3 sein> Da der Code Linie: if (calcNum.isProbablePrime(20))
gibt nie eine true
, ich am Ende die gleiche aufrufen, bis ich Stackoverflow
Ausnahme
kann mir jemand vorschlagen, wie t Mit diesem Problem umgehen?
Vielleicht versuchen Sie nicht, Rekursion zu verwenden ... Setzen Sie es lieber in eine große While-Schleife. Sie können sogar einen Zähler setzen und nach einer bestimmten Anzahl von Wiederholungen zum Stoppen/Fehlschlagen bringen. – Paul
Wenn Sie sicher sind, dass 'calcNum.isProbablePrime()' korrekt funktioniert, sollten Sie wie von Paul vorgeschlagen. – khachik
Nun isProbablePrime() funktioniert gut, aber ich bekomme nie eine Primzahl von 2 Primzahlen .. Ich bekomme nur zusammengesetzte Primzahlen –