Comment vérifier si un élément a appartient à un groupe cyclique spécifique G de premier ordre, étant donné le générateur? En ce moment, je crée simplement tous les éléments du groupe, les enregistre dans un conteneur et vérifie si l'élément est dedans. Ceci est le code im utilise actuellement pour générer tous les éléments du groupe:Recherche d'un élément dans un groupe cyclique de premier ordre
public HashSet<BigInteger> group_elements(BigInteger g, BigInteger q) {
HashSet<BigInteger> group = new HashSet<BigInteger>();
BigInteger element = modPow(g,ONE,q);
for (int i = 2; !group.contains(element); i++) {
group.add(element);
element = modPow(g, BigInteger.valueOf(i), q);
}
return group;
}
Et pour voir si un élément est dans le groupe je vérifie simplement:
if (group.contains(num)) { ... }
Comme vous pouvez le voir la langue is Java
Quelle langue utilisez-vous et ** montrez-nous ce que vous avez essayé ** –
Normalement, je n'écrirais pas seulement du code, mais votre programmation semble bien. C'est le calcul du problème qui vous a retenu, je pense. –
Attends, quoi? Votre groupe est le groupe multiplicatif d'ordre q, non? So * any * entier non divisible par q est un élément du groupe. [Ou, si vous choisissez un représentant pour chaque classe de résidus, comme le fait votre code, alors le groupe est juste {1, ..., q-1}.] Quoi qu'il en soit, vous n'avez pas besoin d'écrire autant code. :-) – ShreevatsaR