2

我正在尝试实现一种算法来搜索循环组 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;

}
4

1 回答 1

3

如果您使用外部循环和 break 语句,您应该能够做您想做的事情。它看起来像这样

   boolean etape = true;
   while(etape){
    etape = false;
    System.out.println("Entrer un generateur :");
    generateur = sc.nextInt();


        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;
于 2013-01-25T22:20:37.517 回答