Étant donné les entiers $ a, b (a> b) $, si $ a $ est divisé par $ b $ et le reste est $ r $. En utilisant le fait que les promesses maximales de $ a $ et $ b $ et les promesses maximales de $ b $ et $ r $ sont égales (principe de division), les promesses maximales de $ a et b $ peuvent être calculées en répétant la division. Comment le trouver.
Entiers d'entrée $ a, b $ Engagement maximum de sortie $ d $
euclid.py
def euclid(a,b):
a_list = []
if a < b:
a_list.append(b)
a_list.append(a)
if a >= b:
a_list.append(a)
a_list.append(b)
i = 0
while(a_list[-1]!=0):
a_list.append(a_list[i]%a_list[i+1])
i +=1
return a_list[-2]
Une méthode pour trouver une solution d'une équation linéaire indéfinie en utilisant le mécanisme suivant. Lorsque vous recherchez $ ax + by = d $, définissez $ a_0 = a, a_1 = b $.
Entiers d'entrée $ a, b $ Sortie: Entiers $ x, y $ avec engagements maximum $ d $ et $ ax + by = d $
exEuclid.py
def exEuclid(a,b):
a_list = []
if a < b:
a_list.append(b)
a_list.append(a)
if a >= b:
a_list.append(a)
a_list.append(b)
q = []
x = []
x.append(1)
x.append(0)
y = []
y.append(0)
y.append(1)
i = 0
while(a_list[-1]!=0):
a_list.append(a_list[i]%a_list[i+1])
q.append(a_list[i]//a_list[i+1])
x.append(x[-2]-q[-1]*x[-1])
y.append(y[-2]-q[-1]*y[-1])
i +=1
return x[-2],y[-2],a_list[-2]
Recommended Posts