mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-30 12:46:11 -04:00
52 lines
977 B
Python
52 lines
977 B
Python
#!/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)}')
|
|
|
|
|