• 締切済み

【VisualBasic】ユークリッドの互除法

VBでユークリッドの互除法のプログラムを作りたいのですが、うまくできません。 テキストボックス1と2(仮にt1、t2と宣言します)に入力された数字を割って余り(mod)を求め、t1t2のどちらの値が大きいか (Math.Max(t1, t2))というところまでは分かるのですが、その後がさっぱりです。 For文で繰り返し処理を行えばいいのですが。 どなたかご助力願います。

みんなの回答

noname#77845
noname#77845
回答No.1

基本的に、アルゴリズムが理解できていないためコーディングが出来ないのではありませんか? http://masaru.wankuma.com/column/Algorithm/euclid/index.html もう一度互除法の勉強をすることをお勧めします…。

関連するQ&A

  • ユークリッドの互除法について

    ユークリッドの互除法を用いて a*e+b*Phi=1 となるようなa,bを求めるプログラムを作りたいのですが 以下のようにしても正しい値になりません どこが間違っているのでしょうか? e=53499289; Phi=96298720; d=0; d_old=1; Psi=1; Psi_old=0; for (;Phi!=0;){ a= e/Phi; h=e; e=Phi; Phi= h%Phi; h=d_old; d_old=d; d=h-d*a; h=Psi_old; Psi_old=Psi; Psi=h-Psi*b; } if (e<0){ b=-e; }else{ b=e; } printf ("(%d)*e+(%d)*Phi_n=%d\n", d_old,Psi_old,b); 正しくは 9*e+(-5)*Phi=1 となるはずです

  • textbox.textやlabel.captionの型変換について

    VB6.0を使用しています。 テキストボックスやラベルに値として数字を入れているのですが、これらの値に数字で加算減算する場合・・・ ●宣言部でintegerを宣言する又は、 ●string型で宣言してからプロシージャ内でCint(textbox.text)やCint(label.caption)のように変換するのとどう違うのでしょうか?

  • VisualBasic6でAccess2000にデータ格納

     初めまして私はVB6.0の初心者でVB6.0について勉強しています。今VB6.0でAccess2000を利用する勉強をしています。 <プログラム内容>  フォームに貼り付けたテキストボックス3つ(ID,Password,氏名)とコンボボックス2つ(性別,年齢)にデータを入力しOKボタン(コマンドボタン)を押すとAccess2000のテーブルの中のレコードが追加される。 <条件> ・テーブル名:PROF ・フィールド情報  IDとPasswordと氏名と性別はテキスト型で、年齢は数値型です。  私の場合は以下のようなコードを作成しましたが実行すると「Insert文が間違っている」と出てきてしまいます。何故なのでしょうか。お知恵をお貸しください。宜しくお願いします。 Private Sub OK_Click() 'OKボタンを押下すると 'ADOのオブジェクト変数を宣言 Dim cn As New ADODB.Connection 'Connectionオブジェクトを扱う変数(cn)を宣言 Dim rs As New ADODB.Recordset 'Reocordsetオブジェクトを扱う変数(rs)を宣言 Dim strSQL As String 'SQL文 strSQL = "INSERT INTO PROF " & _ " (ID " & _ " ,Password " & _ " ,氏名 " & _ " ,性別 " & _ " ,年齢) " & _ "VALUES (' ID.Text ' " & _ " ,' Password.Text ' " & _ " ,' Name.Text ' " & _ " ,' Sex.Text ' )" & _ " ,' Age.Text ' )" 'データベースに接続するための情報を設定する(データベースの種類、データソース) cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source = C:\sample\ID.mdb" 'データソースへ接続 cn.Open 'AcccessのPROF(テーブル)のID,Password,氏名,性別,年齢(フィールド)にデータ(ID,Password,氏名,性別,年齢)を挿入 rs.Open strSQL, cn 'コネクションを終了する cn.Close End Sub

  • VB2005でのコントロール配列?

    お世話になってます。 私はVB入門者です。 使用している用語などに間違いなどがありましたら ツッコんでやって下さい。 VB2005にて、フォーム内にcomboboxが10個あります。 Load時にT_boxの1~10に同じ、配列case_T を代入したいのですが 下記のコードをどのように直せばよいのでしょうか。 VB6まではコントロール配列?というものが、あったようですが 今回求めている処理はそのコントロール配列に該当するのでしょうか? -------------------------------- case_T内の値は 動的な値A,b,c,d,e,f,gがはいっていて それをT_boxの1~10に格納したいです -------------------------------- Dim T_box() As ComboBox = {T_box1, T_box2, T_box3, T_box4, T_box5, T_box6, T_box7, T_box8, T_box9, T_box10} Dim m As Short ReDim T_box(T_box.Length - 1) For n = 0 To T_box.Length - 1 T_box(cont + 1).Items.Clear() For m = 0 To case_T.Length - 1 T_box(cont + 1).Items.Add(case_T(cont)) cont += 1 Next Next T_box1.ResetText() cont = 0 End Sub

  • 数字か文字列かを判定する関数

     JAVAの初心者です、宜しくお願いします。     テキストボックスに入力された値を、数字か文字列かを判定する関数ってありますか、VBでは「isNumeric」とかがあるのですが、JAVAではヒットしませんでした。  どこからどのように調べるのでしょうか。  いいサイトがあれば教えて下さい。

    • ベストアンサー
    • Java
  • JavaScriptを使ってロト6の当選数字を予想するプログラムを考えたのですが・・・

    Math.floor(Math.rondom()*10);を使うと、小数点以下の数字を出さない。 と先生に教えられたのですが、 ((Math.floor(Math.random() * 10)) + (Math.floor(Math.random() * 10))) * (Math.floor(Math.random() * 10)) + 1; を変数に入れて、テキストボックスに出力してみると、なんと小数点が出てしまいます! しかも、27.5や59.5などと、ちょうど0.5が出てしまいます。 この0.5を出さないように、ランダムで数字を出したいのですが、Math.floor以外で使えるものがあったら教えてください。 よろしくお願いします。

  • Excel VBA 計算結果の表示方法

    ExcelのVBAでコマンドボタンを押すと以下のようなプログラムを考えています。 '変数宣言 Dim MIN As Integer Dim MAX As Integer Dim i As Integer MIN = CInt(TextBox1.Text) MAX = CInt(TextBox2.Text) 'ループ For i = MIN To MAX If i Like "*3" Or i Like "3*" Or i Mod 3 = 0 Then End If Next i と、ここまでは考えたのですが、結果の表示方法を一つのメッセージボックスで カンマ区切りで表示させる方法が調べてもわかりませんでした。 If i Like....の結果を一つにまとめてそれを表示するのかな。。。? なんて考えておるのですが、皆様のご教授を承りたく思います。 宜しくお願いします。 ※テキストボックス、コマンドボタンはユーザーフォーム上にあります。

  • TABキーで、カーソル移動したテキストの値を選択状態にしたい

    現在VBでプログラムを作っております。 TABキーにて、カーソルがテキストボックスに位置付く際、入力されている 値を選択状態にしたいのですけど、これって可能ですか? 現状、TABキーを押せば、テキストボックスにカーソルが移動しますが、 仮に(テキストボックスに)100と値が入っていた場合、カーソルは100の値 の先頭に位置付き、値の修正が必要となった場合、Deleteキー等で値を消し てから、再度入力となります。 これがわずらわしいので、カーソル移動したら、そのまま選択状態とし、 入力すれば、値が上書きされるようにしたいです。 よろしくお願いします。

  • ユークリッドの互除法

    すべての自然数a,bに対して sa+tb=gcd(a,b) となるような整数s,tがあることの証明問題なのですが、 a=bの場合はs=0, t=1で条件を満たす a<bとして一般性を失わない 数学的帰納法で 1) a+b=2 a=b=1なので s=0, t=1で条件を満たす 2)自然数kに対してa+b≦kで条件を満たすとき、 a+b=k+1のときは sa+t(b-a)=gcd(a,b-a) を満たす整数s,tが存在する(a+(b-a)≦kは明らか) sa+t(b-a)=gcd(a,b-a) sa+tb-ta=gcd(a,b-a) (s-t)a+tb=gcd(a,b) といったかんじで大まかには合ってますか? 間違いがありましたらご指摘ください  よろしくお願いします

  • ユークリッド互除法について

    ユークリッド互除法について詳しく勉強したいのですが、教えていただけないでしょうか? よろしくお願いします。