Sections

2017-10-08

Implementace Euklidova algoritmu pro hledání Bezoutova rozkladu v Pythonu 3

#Algoritmus pochazi z materialu k prednaskam doc. Habaly, ktereho mame na diskretni matematiku. Bylo to jenom o neco tezsi odladit nez 1. domaci ukol z proceduralniho programovani, a to C znam uz 2 roky. Ten Python asi nebude tak spatnej.

print("")
print("NSD a Bezout 2 celych cisel.")
print("")

r=[]
r.append(int(input("a := ")))
r.append(int(input("b := ")))

k=0
x=[1, 0] #jednotkova matice
y=[0, 1]
q=[]

while r[-1] != 0:
    k += 1
    q.append((r[k-1])//r[k]) #q je o 1 pozadu
    r.append(r[k-1]%r[k]) #nazorne modulo
    x.append(x[k-1]-q[-1]*x[k])
    y.append(y[k-1]-q[-1]*y[k])

print("")
#skoda, ze python 3 odmita implicitni prevody
print("NSD("+str(r[0])+", "+str(r[1])+") = "+str(r[k])+" = "+str(x[k])+" * "+str(r[0])+" + "+str(y[k])+" * "+str(r[1]))
print("")

if r[k] == 1:
    print("Cisla jsou nesoudelna.")
    print("")

print("Koncovy stav:") #mezivypocty
print("q = "+str(q))
print("r = "+str(r))
print("x = "+str(x))
print("y = "+str(y))
print("k = "+str(k))
print("")

No comments:

Post a Comment

Barely anyone comments, so I don't moderate. Free advertising, I guess.