7
Prepiši sledeči algoritem iz diagrama poteka v pythonov program:
Kakšen problem rešuje ta algoritem?
8
Problem iskanja največjega skupnega delitelja lahko rešimo tudi z (v splošnem počasnejšim) algoritmom, ki novo spremenljivko (npr. d
) najprej postavi na manjše od obeh števil, nato pa jo zmanjšuje tako dolgo, dokler obe vhodni števili ne postaneta deljivi z d
. Zapiši algoritem v obliki pythonove funkcije.
9
Pokaži, da oba algoritma za računanje največjega skupnega delitelja vrneta enak izhod za vse pare celih števil a ∈ {1, ..., 100} in b ∈ {1, ..., 100}.
10
Utemelji, zakaj spodnji algoritem pravilno izračuna število števk podanega pozitivnega celega števila.
def steviloStevk(n): p = n s = 0 while p > 0: p = p // 10 s += 1 return s
11
Dokaži, da se algoritem iz prejšnje naloge ustavi pri vseh pozitivnih celih številih n
.
12
Ali se spodnji algoritem ustavi pri vseh pozitivnih celih številih n? Kaj pa, če bi zančni pogoj spremenili v n > 1
?
def zanka(n): while n > 0: n = (n + 1) // 2