Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在素数阶循环群中寻找元素_Java_Algorithm_Math_Cyclic - Fatal编程技术网

Java 在素数阶循环群中寻找元素

Java 在素数阶循环群中寻找元素,java,algorithm,math,cyclic,Java,Algorithm,Math,Cyclic,给定生成器,如何检查元素a是否属于素数阶的特定循环群G?现在,我只需生成组中的所有元素,将它们保存到一个容器中,并检查该元素是否在其中。这是im当前用于生成组的所有元素的代码: public HashSet<BigInteger> group_elements(BigInteger g, BigInteger q) { HashSet<BigInteger> group = new HashSet<BigInteger>(); BigInt

给定生成器,如何检查元素a是否属于素数阶的特定循环群G?现在,我只需生成组中的所有元素,将它们保存到一个容器中,并检查该元素是否在其中。这是im当前用于生成组的所有元素的代码:

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;

}

正如您所看到的,该语言是Java,请查看问题和解决问题的方法。

请查看问题和解决问题的方法。

也许您有关于该组外观的更多信息

如果你知道由G生成的群G的顺序,如果q是素数(你只告诉我们G的顺序是素数,但与q无关),那么你可以通过测试来检查元素x是否在G中

1=xord(G)mod q


如果q不是素数,则此测试不起作用。反例是g=22,q=91,x=53。这里g生成具有元素{1,22,29}的子组。x也有3阶,但不是g生成的子群的元素

也许你有更多关于团队的信息

如果你知道由G生成的群G的顺序,如果q是素数(你只告诉我们G的顺序是素数,但与q无关),那么你可以通过测试来检查元素x是否在G中

1=xord(G)mod q


如果q不是素数,则此测试不起作用。反例是g=22,q=91,x=53。这里g生成具有元素{1,22,29}的子组。x也有3阶,但不是g生成的子群的元素

你在使用哪种语言,并向我们展示你尝试过的东西。通常,我不会只写代码,但你的编程看起来不错。我想是这个问题的数学问题让你受不了。等等,什么?你们的群是q阶的乘法群,对吗?所以任何不能被q整除的整数都是群的一个元素。[或者,如果您要为每个剩余类选择一个代表,就像您的代码那样,那么该组就是{1,…,q-1}.]无论哪种方式,您都不必编写那么多代码。:-)我假设提问者实际上是指G是G生成的(Z/q)*的子群。我删除了我的答案,因为我认为我对你所想的是什么样的群的看法是错误的。很抱歉造成混淆。您使用的是哪种语言,并向我们展示您尝试过的内容。通常,我不会只写代码,但您的编程似乎很好。我想是这个问题的数学问题让你受不了。等等,什么?你们的群是q阶的乘法群,对吗?所以任何不能被q整除的整数都是群的一个元素。[或者,如果您要为每个剩余类选择一个代表,就像您的代码那样,那么该组就是{1,…,q-1}.]无论哪种方式,您都不必编写那么多代码。:-)我假设提问者实际上是指G是G生成的(Z/q)*的子群。我删除了我的答案,因为我认为我对你所想的是什么样的群的看法是错误的。很抱歉给你带来了困惑。
if (group.contains(num)) { ... }