我正在尝试实现一种算法来搜索循环组 G 的生成器:
n 是组 G 的顺序,而 Pi 是将 n 分解为素数,例如 n = P1^e1 x P2^e2 ... .x Pk^ek
这是算法:
第 1 步:从 G 中选择一个元素 g
第 2 步:对从 1 到 k 的每个 i 执行
第 2.1 步:b <- pow ( g , n / Pi )
第 2.3 步:如果 b =1 转到第 1
步 第 3 步:返回 g
这是我在 java 中的实现,我想使用 goto 但它会产生错误:
public int getGenerateur(){
List<Integer> facteur=new ArrayList<Integer>();
facteur=this.getFacteur(nombre);
double b;
int generateur=0;
boolean etape = true;
while(etape){
etape = false;
System.out.println("generateur aleatoire:");
generateur =(int) (Math.random() * (nombre - 2)) + 2;
System.out.println(generateur);
for(int s=0;s<facteur.size();s++){
b=Math.pow(generateur,(nombre/facteur.get(s)))%(nombre+1);
System.out.println("b= "+b);
if(b==1){
etape = true;
break;
}
}
}
return generateur;
}