2012-03-26 18 views
1

モジュラインバースを計算しようとしています。これは私が試したことですが、うまくいきません。C#が期待どおりに機能しないモジュラインバース

while (priv != 1) 
{ 
    priv = ((x * other) % modulo); 
    x++; 
    textBox3.Text = textBox3.Text + "Trying: " + priv.ToString() + " ..."+"\n"; 
    if (priv == 1) 
    { 
     textBox3.Text = (" IS: " + priv.ToString() +" !"); 
    } 
} 

時々、これは1を出力するか、何も出力しません。

私はまあ、私はあなたのために宿題を台無しに憎むモジュラー逆に(x) of [x*781]%2828 = 1

+0

モジュラー逆に 'GCD(781、2828)== 1 – CodesInChaos

+1

ない厳密いるので、数字のこのペアのために存在しますあなたの質問に答えますが、あなたが知らないかもしれない何か。 ステータス表示のいくつかの形式として私たちにtextBox3.Textを試みているようですか?これは、メソッドが完了するまで画面上で変更されないため、問題です。 Debug.WriteLine()を使用してVSの出力ウィンドウに情報を入力するほうがずっと良い進捗状況を知りたい場合は、少なくともあなたが物事を把握するまで。 UIマルチスレッドを参照するか、ルックアップします。 – KingCronus

答えて

1

出力コードがpriv == 1チェックに包まれているので、それが1または何も出力し...

あなたはおそらく、あなたのコードにこの変更をしたい(:ここではあなたが必要なものを計算するための様々なアルゴリズムに関するWikipediaの記事ですそれはあなたが記述している問題の原因ではないので、計算)が正しいかどうか:

while (priv != 1) 
{ 
    priv = ((x * other) % modulo); 
    x++; 
    textBox3.Text = textBox3.Text + "Trying: " + priv.ToString() + " ..."+"\n"; 
    if (priv == 1) 
    { 
     break; // end the loop 
    } 
} 

textBox3.Text = (" IS: " + priv.ToString() +" !"); 
関連する問題