Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [100; 100000], пары дружественных чисел. В ответ укажите количество таких пар и через пробел минимальную чётную сумму такой пары. Дружественные числа — это два различных натуральных числа, для которых сумма всех собственных делителей (исключая в качестве делителя само число) первого числа равна второму числу и наоборот, сумма всех собственных делителей (исключая в качестве делителя само число) второго числа равна первому числу. Пример, числа 220 и 284. У числа 220 делителями являются числа: 1,2,5,10,11,20,22,44,55,110 их сумма равна 284. У числа 284 делителями являются числа: 1,2,4,71,142 их сумма равна 220.
def divs(x):#функция поиска делителей определенного числа d = {1}#изначально включаем единицу for i in range(2,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) L = 100#левая граница отрезка M = 100001#правая граница отрезка d = {x:sum(divs(x)) for x in range(L,M)} #словарь, в котором в качестве ключа будет число из промежутка, # а в качестве значения будет сумма делителей (за исключением самого числа) данного числа # для оптимизации в словаре мы будем оставлять только те числа, # чья сумма делителей находится в пределах нашего отрезка count = [] mn = 10**20 for key in d.keys():#проходимся по всевозможным числам из отрезка if key == d.get(d[key]) and d[key] != key:#если первое число равно сумме делителей второго числа, #и при этом сумма делителей первого числа не равна первому числу if sorted([key,d[key]]) not in count:#тогда проверяем, #что если ранее такая пара чисел не была в списке #P.S. d[key] - значение суммы делителей числа key это не только сумма делителей, # но и также второе число пары дружественных чисел count.append([key,d[key]])#то добавляем print(len(count),min(sum(x) for x in count if sum(x) % 2 == 0)) #вывод количества таких пар и минимальной чётной суммы таких пар
Специальные программы
Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!
Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.
Бесплатное обучение
в Школково
Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.
Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».
Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!
Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!