From 9a4c854521afb9c98871cd6aa0b69822065e2203 Mon Sep 17 00:00:00 2001 From: William Mantly Date: Sun, 24 Sep 2023 21:00:53 +0000 Subject: [PATCH] Update 05-sum_of_divisors/wtf.py --- 05-sum_of_divisors/wtf.py | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/05-sum_of_divisors/wtf.py b/05-sum_of_divisors/wtf.py index 9d2e936..d989648 100644 --- a/05-sum_of_divisors/wtf.py +++ b/05-sum_of_divisors/wtf.py @@ -1,14 +1,40 @@ +import fractions + def compute_divisors(num): - pass + divisors = [1] + for i in range( 2, num//2+1 ): # if num is even, one needs to be added + if num % i == 0: + divisors.append(i) + + divisors.append( num ) + + return divisors def sum_of_divisors(num): - pass + sumOf = 0 + for i in compute_divisors( num ): + sumOf += i + + return sumOf def divisor_count(num): - pass + return len( compute_divisors(num) ) def get_totatives(num): - pass + totatives = [] + for i in range(0, num): + gcd = fractions.gcd( i, num ) + if gcd == 1: + totatives.append( i ) + + return totatives def totient(num): - pass + return len( get_totatives(num) ) + + +assert( compute_divisors(60) == [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60] ) +assert( sum_of_divisors(60) == 168 ) +assert( divisor_count(60) == 12 ) +assert( get_totatives(30) == [1, 7, 11, 13, 17, 19, 23, 29] ) +assert( totient(30) == 8 ) \ No newline at end of file