使用Java查找基元根

使用Java查找基元根,java,primitive,modulus,Java,Primitive,Modulus,我试图得到质数的第一个本原根: private static int GetPrime(int factors[], int modul) { for (int i = 2; i < modul; i++) { int j = 0; while (j < factors.length) { int power = (modul - 1) / factors[j]; long g = (long)

我试图得到质数的第一个本原根:

private static int GetPrime(int factors[], int modul) {

    for (int i = 2; i < modul; i++) {
        int j = 0;
        while (j < factors.length) {
            int power = (modul - 1) / factors[j];
            long g = (long) Math.pow(i, power);
            long mod = g % modul;

            if (mod == 1) {
                j++;
                break;
            } else if (j + 1 == factors.length) {
                return i;
            }
            j++;

        }
    }
    return 0;
}
私有静态int-GetPrime(int-factors[],int-modul){
对于(int i=2;i
作为参数,我有素数(因子)和素数(模)的素数因子。我试图实现查找第一个素根的函数,对于某些数字它是有效的,但对于其他数字它失败了。例如,它给出了23的正确答案,即5,但对于71,它失败了,而不是7,它给出了3。我想不出是怎么回事。
基本上,公式是n^((modul-1)/factor)%modul,如果对于其中一个因子,每个n的提醒是1,那么n不是质数根。

欢迎使用堆栈溢出!看起来您需要学习使用调试器。请随便吃点。如果您以后仍然有问题,请随时回来提供更多详细信息。请提供因子和模的示例输入。因子:11,2和模:23。结果应该是5欢迎堆栈溢出!看起来您需要学习使用调试器。请随便吃点。如果您以后仍然有问题,请随时回来提供更多详细信息。请提供因子和模的示例输入。因子:11,2和模:23。结果应该是5