Форум » Обработка целых чисел » (№ 2580) (Б.С. Михлин) » Ответить

(№ 2580) (Б.С. Михлин)

ирина11: здравствуйте! (№ 2580) (Б.С. Михлин) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [586132; 586430], числа, имеющие максимальное количество различных делителей. Найдите минимальное и максимальное из таких чисел. В ответе для каждого из них запишите два числа: количество делителей и наибольший делитель, не равный самому числу. Спрятать ответ 80 293112 80 293160 мой код max=0 a=[] de=[] for n in range(586132, 586430+1): divs = [] for d in range(1,n+1): # перебор всех возможных делителей if n % d == 0: # если нашли делитель d divs.append(d) # то добавили его в массив #print(divs) if len (divs)>max: max=len(divs) de.append(divs[max-2]) a.append(n) print(*a) print(*de) print(max) вывожу все найденные числа для контроля 586132 586140 586146 586152 586170 586224 - это n 293066 293070 293073 293076 293085 293112 - это найденные делители 80 то есть ответ должен быть 80 293066 80 293112 я ошибаюсь?

Ответов - 6

ирина11: отступы не сохранились

ирина11:

Михлин: Здравствуйте, Ирина11! У Вас также как и у меня получилось, что максимальное количество делителей 80. Давайте распечатаем все числа в заданном диапазоне, у которых 80 делителей. Для этого в Вашей программе после цикла формирующего массив divs можно поставить: if len(divs)==80: print(divs[::-1]) Я напишу для каждого числа только два старших делителя (1-й делитель это само число): [586224, 293112, ...] [586278, 293139, ...] [586320, 293160, ...] Т.е. таких чисел только три. Ответ: 80 293112 - для минимального числа 586224, 80 293160 - для максимального числа 586320.


ирина11: Спасибо! Можете прислать свой вариант программы?

Михлин: mad1,mad2=0,0 # максимальное количество делителей for n in range(586132, 586430+1): divs=[d for d in range(n,0,-1) if n%d==0] # "divs"- массив делителей числа n (от n до 1) if len(divs)>mad1: mad1=len(divs) madivs1=divs if len(divs)>=mad2: # нестрогое неравенство mad2=len(divs) madivs2=divs print(mad1,*madivs1) print(mad2,*madivs2) print('Ответ:') print(mad1,madivs1[1]) print(mad2,madivs2[1])

ирина11: спасибо



полная версия страницы