我有一个我似乎无法解决的问题。我随机生成数字以确定我的数字是否是相对质数。

这是给我一个浮点异常的函数:

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;
}

我通过执行以下操作在不同的函数中随机种子:
 srand(time(NULL));

非常感谢您的帮助!

最佳答案

您在 while 循环中将 exponent 向右移动,直到它达到 0。
所以第二次你到达 base = rand() % exponent; exponent 是 0 并且你除以 0

10-08 17:06