Calculate the value of Euler's totient for a given integer

    Args:
        n (int): strictly positive integer

    Returns:
        The value of Euler's totient for n

    Raises:
        TypeError: If either n or k is not an integer
        ValueError: If either n or k is negative, or if k is strictly greater than n

def eulers_totient(n):

    """ Calculate the value of Euler's totient for a given integer

    Args:
        n (int): strictly positive integer

    Returns:
        The value of Euler's totient for n

    Raises:
        TypeError: If either n or k is not an integer
        ValueError: If either n or k is negative, or if k is strictly greater than n

    """

    if not isinstance(n, int):
        raise TypeError("Expecting a strictly positive integer")
    if n <= 0:
        raise ValueError("Expecting a strictly positive integer")

    if n == 1:
        return 1

    result = 0
    for i in range(1, n):
        if gcd(i, n) == 1:
            result += 1
    return result