-
Notifications
You must be signed in to change notification settings - Fork 0
/
21 - find_all_divisors.py
40 lines (29 loc) · 1.29 KB
/
21 - find_all_divisors.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import sys, math, os
sys.path.append(os.path.dirname(__file__) + "/..")
import useful_functions as useful
def main():
print("Все делители числа 128:", end=" ")
useful.print_array(find_divisors(128))
print("Все делители числа 303:", end=" ")
useful.print_array(find_divisors(303))
print("Все делители числа 1139:", end=" ")
useful.print_array(find_divisors(1139))
print("Все делители числа 2080:", end=" ")
useful.print_array(find_divisors(2080))
# ----------------
# Проверить правильность работы программы можно здесь:
# https://onlinemathtools.com/find-all-divisors
# ----------------
def find_divisors(number):
divisors = []
# Как и в случае с простыми числами, поиск ведём только до sqrt(number).
max_border = math.floor(math.sqrt(number))
for div in range(1, max_border + 1):
if number % div == 0:
divisors.append(div)
# Подбираем вторую пару для первого делителя.
if number // div != div:
divisors.append(number // div)
divisors.sort()
return divisors
main()