sol3

    Our FREE site is mostly funded by the Amazon ads ⇓below⇓.

    Support us by clicking ⇑above⇑ next time you plan to buy a product on Amazon.

    """
    Problem:
    The prime factors of 13195 are 5,7,13 and 29. What is the largest prime factor
    of a given number N?
    
    e.g. for 10, largest prime factor = 5. For 17, largest prime factor = 17.
    """
    
    
    def solution(n: int) -> int:
        """Returns the largest prime factor of a given number n.
    
        >>> solution(13195)
        29
        >>> solution(10)
        5
        >>> solution(17)
        17
        >>> solution(3.4)
        3
        >>> solution(0)
        Traceback (most recent call last):
            ...
        ValueError: Parameter n must be greater or equal to one.
        >>> solution(-17)
        Traceback (most recent call last):
            ...
        ValueError: Parameter n must be greater or equal to one.
        >>> solution([])
        Traceback (most recent call last):
            ...
        TypeError: Parameter n must be int or passive of cast to int.
        >>> solution("asd")
        Traceback (most recent call last):
            ...
        TypeError: Parameter n must be int or passive of cast to int.
        """
        try:
            n = int(n)
        except (TypeError, ValueError):
            raise TypeError("Parameter n must be int or passive of cast to int.")
        if n <= 0:
            raise ValueError("Parameter n must be greater or equal to one.")
        i = 2
        ans = 0
        if n == 2:
            return 2
        while n > 2:
            while n % i != 0:
                i += 1
            ans = i
            while n % i == 0:
                n = n / i
            i += 1
    
        return int(ans)
    
    
    if __name__ == "__main__":
        # print(solution(int(input().strip())))
        import doctest
    
        doctest.testmod()