使用Java查找原始根

时间:2016-11-21 21:58:53

标签: 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) Math.pow(i, power);
            long mod = g % modul;

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

        }
    }
    return 0;
}

作为参数,我有数量(因子)和素数(模数)的素因子。我试图实现查找​​第一个主根的函数,对于某些数字它可以工作,但对于其他数据它失败了。例如,它给出了23的正确答案,即5,但是对于71,它失败了,而不是7,它给出了3.我无法弄清楚出了什么问题。 基本上公式是n ^((modul-1)/ factor)%modul,如果对于其中一个因子,每个n的提醒是1,则n不是主根。

0 个答案:

没有答案