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 に答える