新しく発言する  EXIT  インデックスへ
拡張ユークリッド互除法

  拡張ユークリッド互除法 山中和義 2008/01/08 11:40:31  (修正1回)
  別解(繰り返し、MAT文による) 山中和義 2008/01/10 16:10:41 

Re: 拡張ユークリッド互除法  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/01/10 16:10:41
別解(繰り返し、MAT文による)



!拡張ユークリッド互除法

!「a*x+b*y=GCD(a,b)となるxとyが存在する 」

!補助式
! a*x1+b*y1=z1
! a*x2+b*y2=z2
!を考える。
!z1/z2の商Q、余りRと置くと、z1=Q*z2+R。
!したがって、R=z1-Q*z2=a*x1+by1 - Q*(a*x2+b*y2)=a*(x1-Q*x2) + b*(y1-Q*y2)。
!ここでa*x3+by3=z3と比較して、
!x3=x1-Q*x2, y3=y1-Q*y2, z3=R=z1-Q*z2


INPUT PROMPT "2つの正の整数": a,b

DIM v1(3),v2(3),v3(3)
LET v1(1)=1 !x1
LET v1(2)=0 !y1
LET v1(3)=a !z1

LET v2(1)=0 !x2
LET v2(2)=1 !y3
LET v2(3)=b !z3

DO UNTIL v2(3)=0 !z2=0まで
LET Q=INT(v1(3)/v2(3)) !z1/z2の商

DIM t(3) !(x3,y3,z3)=(x1,y1,z1)-Q*(x2,y2,z2)
MAT t=Q*v2
MAT v3=v1-t

MAT v1=v2 !(x1,y1,z1)=(x2,y2,z2)

MAT v2=v3 !(x2,y2,z2)=(x3,y3,z3)
LOOP

PRINT "x,y,GCD(a,b)"
MAT PRINT v1

END


 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。