Untitled

 avatar
unknown
python
3 years ago
823 B
4
Indexable
#
# 4 апреля 2022
#

# На вход подается два натуральных числа a и b. 
# Напишите программу. которая находит натуральное 
# число из отрезка [a,b] с максимальной суммой делителей.

def dsum(x):
    s = 1+x
    for i in range(2,x//2+1):
        if x%i == 0: s = s+i
    return s

def maxDSum(a,b):
    n = 0
    j = 0
    for i in range(a,b+1):
        y = dsum(i)
        if y > n: n,j = y,i
    return j, n

print(maxDSum(1, 15))
print(maxDSum(1, 20))

# второй вариант
def dsum2(n): return sum(x for x in range(1, n+1) if n%x==0)
def maxDSum2(a,b): x = max(range(a, b+1), key=dsum2); return x, dsum2(x)
    
print(maxDSum2(1, 15))
print(maxDSum2(1, 20))
Editor is loading...