Qui veut m'aider avec mes devoirs?Mise en œuvre du test de primalité de Fermat
Je suis d'essayer d'implémenter Fermat's primality test en Java en utilisant BigIntegers. Ma mise en œuvre est la suivante, mais malheureusement, cela ne fonctionne pas. Des idées?
public static boolean checkPrime(BigInteger n, int maxIterations)
{
if (n.equals(BigInteger.ONE))
return false;
BigInteger a;
Random rand = new Random();
for (int i = 0; i < maxIterations; i++)
{
a = new BigInteger(n.bitLength() - 1, rand);
a = a.modPow(n.subtract(BigInteger.ONE), n);
if (!a.equals(BigInteger.ONE))
return false;
}
return true;
}
Je suis nouveau à BigIntegers.
Merci!
Vous aurez plus de chance si vous épelez ce que "ne fonctionne pas". – duffymo
Par "ne fonctionne pas" Je veux dire qu'il ne donne pas un résultat correct. Par exemple, lorsque je le teste sur des nombres premiers tels que 2, 3, 5 et 7, il renvoie "false" quand il doit retourner "true". –
Avez-vous vérifié que a = new BigInteger (n.bitLength() - 1, rand); est en effet une valeur normale lors de l'impression, et rand est correctement initialisé de 1 à n (je ne vois pas cette partie)? – extraneon