Files
euler/src/task21 - Amicable numbers.py
2020-06-21 23:53:32 +02:00

36 lines
723 B
Python

def is_prime(n):
if n == 2 or n == 3: return True
if n < 2 or n%2 == 0: return False
if n < 9: return True
if n%3 == 0: return False
r = int(n**0.5)
f = 5
while f <= r:
if n%f == 0: return False
if n%(f+2) == 0: return False
f +=6
return True
def factorize(n):
factors = [1]
if not is_prime(n) and n>1:
for i in range(2,n):
if n%i==0:
factors.append(i)
return factors
def sumFactors(factors):
result = 0
for i in factors:
result+=i
return result
result = 0
for i in range(2, 10001):
b = sumFactors(factorize(i))
if i==sumFactors(factorize(b)) and i!=b:
result+=i
print(result)