#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl


import math
import random


def find_greatest_common_divider(a, b) -> int:
    '''Implements the greatest common divider algorithm '''
    
    while(b != 0):
        result = b
        a, b = b, a % b
        
    return result


def _is_prime(number) -> bool:
    '''Check if a number is prime '''

    if number < 2:
        return False

    for i in range(2, int(math.sqrt(number))):
        if number % i == 0:
            return False
    
    return True


def find_prime_factors(number) -> list:
    '''Find prime factors of a number '''
    
    divisors = [d for d in range(2, number//2 + 1) if number % d == 0]
    primes = [d for d in divisors if _is_prime(d)]

    return primes



if __name__ == '__main__':

    n1 = 21
    n2 = 7

    print(f'Greatest common divider of {n1} and {n2} is {find_greatest_common_divider(n1, n2)}')
    print(f'Prime factors of {n1} are {find_prime_factors(n1)}')