def isAmicable(n , m): """ Returns true if given pair m and n are amicable n : int denotes positive integer m : int denotes positive integer return : bool returns true if given pair is amicable otherwise returns false """ if(n!=int(n) or n<1 or m!=int(m) or m<1): raise ValueError( "n and m must be positive integer" ) return (divisor_sum(n) == m + n) and (divisor_sum(m) == m+n)
def test_divisor_sum2(): """ Tesing for a large number using brute force """ num = 1000 sum_divisors = 0 for i in range(1,num+1): if(num % i == 0): sum_divisors += i assert divisor_sum(num) == sum_divisors
def isPerfect(n): """ Returns true if the given positive integer is perfect Parameters ---------- n : int denotes positive integer return : bool returns true if number is perfect otherwise false """ if (n != int(n) or n < 1): raise ValueError("n must be positve integer") return divisor_sum(n) == 2 * n
def test_divisor_sum1(): """ Tesing for a small integer """ assert divisor_sum(10) == 18