Skip to content

Commit 2882c18

Browse files
Create amicable_numbers.py
1 parent 7311908 commit 2882c18

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

maths/amicable_numbers.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""
2+
From: https://en.wikipedia.org/wiki/Amicable_numbers
3+
Amicable numbers are two different numbers related in such a way that the sum of the proper divisors of each is equal to the other number.
4+
5+
>>> amicable_numbers(60,84)
6+
False
7+
>>> amicable_numbers(220,284)
8+
True
9+
>>> amicable_numbers(-10,24)
10+
False
11+
"""
12+
13+
14+
def amicable_numbers(first_number, second_number) -> bool:
15+
if first_number <= 1 or second_number <= 1:
16+
return False
17+
first_number_proper_divisors = [
18+
i for i in range(1, first_number) if first_number % i == 0
19+
]
20+
second_number_proper_divisors = [
21+
i for i in range(1, second_number) if second_number % i == 0
22+
]
23+
return (
24+
sum(first_number_proper_divisors) == second_number
25+
and sum(second_number_proper_divisors) == first_number
26+
)
27+
28+
29+
if __name__ == "__main__":
30+
import doctest
31+
32+
doctest.testmod()

0 commit comments

Comments
 (0)