Я пытаюсь реализовать в Java алгоритм Ферма, Миллера-Рабина или AKS с использованием класса BigInteger.
Я думаю, что у меня реализован тест Ферма , за исключением того, что класс BigInteger не позволяет привести BigIntegers к силе BigIntegers (можно взять только BigIntegers к силе примитивных целых). Есть ли способ обойти это?
Проблемная строка обозначена в моем коде:
public static boolean fermatPrimalityTest(BigInteger n)
{
BigInteger a;
Random rand = new Random();
int maxIterations = 100000;
for (int i = 0; i < maxIterations; i++) {
a = new BigInteger(2048, rand);
// PROBLEM WITH a.pow(n) BECAUSE n IS NOT A BigInteger
boolean test = ((a.pow(n)).minus(BigInteger.ONE)).equals((BigInteger.ONE).mod(n));
if (!test)
return false;
}
return true;
}