生成元が与えられたとき、元 a が特定の素数の巡回群 G に属しているかどうかを確認するにはどうすればよいですか? 現在、グループ内のすべての要素を生成し、それらをコンテナーに保存して、要素がその中にあるかどうかを確認するだけです。これは、グループのすべての要素を生成するために現在使用しているコードです。
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;
}
要素がグループに含まれているかどうかを確認するには、次のように確認します。
if (group.contains(num)) { ... }
ご覧のとおり、言語は Java です。