Floating Point Exception verursacht durch rand () in C ++
-
22-09-2019 - |
Frage
ich ein Problem habe, dass ich nicht zu lösen scheinen. Ich bin zufällig Zahlen, um zu erzeugen, um zu bestimmen, ob meine Zahlen Relativität prim sind.
Hier ist die Funktion, die mir eine Floating Point Exception gibt:
bool modularExponentiationTest(unsigned long long exponent, unsigned long long modulus)
{
short index = 0;
unsigned long long base;
unsigned long long result;
do
{
result = 1;
base = rand() % exponent; // <--CAUSED BY THIS
while (exponent > 0)
{
if (exponent & 1)
result = (result * base) % modulus;
exponent >>= 1;
base = (base * base) % modulus;
}
if (result != 1)
return false;
}while(++index < 10);
return true;
}
Ich habe Samen zufällig in einer anderen Funktion, indem Sie die folgenden Aktionen ausführen:
srand(time(NULL));
Vielen Dank für Ihre Hilfe!
Lösung
Sie Verschiebung exponent
nach rechts in der while-Schleife, bis es 0
erreichen
So zweites Mal erreichen Sie base = rand() % exponent;
exponent
0 und Sie haben eine Division durch 0
Andere Tipps
Ist der Wert von exponent
Null? Wenn ja, dass eine Division durch Null Ausnahme recht.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow