# výpočet n-té odmocniny Newtonovou metodou

# vstup čísla
a = float(input('Zadej kladné číslo: '))
n = int(input('Zadej řád odmocniny: '))

# kontrola vstupu
if a <= 0.0 or a == float('+inf'):
    print('Argument pro výpočet odmocniny je mimo povolený rozsah.')
elif n < 1 or n > 10:
    print('Odmocniny takového řádu nejsou podporovány.')
else:   
    # výpočet odmocniny
    x0 = 1.0 # počáteční odhad

    presnost = 1.0e-14 # požadovaná relativní přesnost
    iteraci = 0 # počítadlo iterací

    # iterační cyklus
    while True:
        x1 = 1 / n * ((n - 1) * x0 + a / x0 ** (n - 1)) # upřesnění odhadu
        iteraci = iteraci + 1 # aktualizace počítadla
        # test přesnosti v relativním měřítku
        if x0 * (1 - presnost) < x1 < x0 * (1 + presnost):
            break # požadovaná přesnost byla dosažena
        x0 = x1 # prohlásíme odhad za starý a opakujeme cyklus

    # výpis výsledku
    print('Odmocnina je přibližně    :', x1)
    print('Přímo vypočtená hodnota   :', a ** (1 / n))
    print('Počet provedených iterací :', iteraci)
