def binsearch_sqrt(num):
    low = 1
    high = num
    guess = low + (high - low) / 2
    count = 0
    while guess != low and guess != high:
        sqr = guess * guess

        if sqr == num:
            break
        elif(sqr < num):
            low = guess
        else:
            high = guess

        guess = low + (high - low) / 2
        count += 1

    else:
        if abs(low * low - num) < abs(high * high - num):
            guess = low
        else:
            guess = high
    return count, guess

def print_result(num, count, guess):
    print(count, 'iterations')
    print(num, '~=', guess * guess)
    print(num**0.5, '~=', guess)
    print()

print_result(2, *binsearch_sqrt(2))
print_result(9, *binsearch_sqrt(9))