What is the most efficient way to find amicable numbers in python?

后端 未结 6 771
花落未央
花落未央 2020-12-19 23:13

I\'ve written code in Python to calculate sum of amicable numbers below 10000:

def amicable(a, b):
   total = 0
   result = 0
   for i in range(1, a):
               


        
6条回答
  •  感情败类
    2020-12-20 00:11

    Adding to the answer:

    def sum_factors(self, n):  
        s = 1
        for i in range(2, int(math.sqrt(n))+1):
            if n % i == 0:
                s += i
                s += n/i
        return s
    
    def amicable_pair(self, number):
        result = 0
        for x in range(1,number+1):
            y = self.sum_factors(x)
            if self.sum_factors(y) == x and x != y:
                result += x
        return result
    

    No need for sets or arrays. Improvinging storage and clarity.

提交回复
热议问题