Floating Point Exception Caused By rand() In c++
I have an issue that I can't seem to solve. I am randomly generating numbers in order to determine if my numbers are relativity prime.
Here开发者_StackOverflow中文版 is the function that gives me a Floating Point Exception:
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;
}
I did seed random in a different function by doing the following:
srand(time(NULL));
Thank you very much for your help!
You're shifting exponent
to the right in the while loop until it reach 0.
So the second time you reach base = rand() % exponent;
exponent
is 0 and you have a division by 0
Is the value of exponent
zero? If so, that a divide-by-zero exception right there.
精彩评论