Initial commit
This commit is contained in:
35
src/task21 - Amicable numbers.py
Normal file
35
src/task21 - Amicable numbers.py
Normal file
@@ -0,0 +1,35 @@
|
||||
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)
|
||||
|
Reference in New Issue
Block a user