Форум » Массивы, сортировка, работа с файлами » 2910 25 » Ответить

2910 25

Ar3turrr: Не могу найти ошибку в решении. У меня получается 10 подходящий числе, когда в ответе их 6(12 конечных делителей : 2). [pre2]devlist = [] nums = [] for i in range(118811, 118973): temp = [] devisors = 0 if int(i ** 0.5) != i ** 0.5: for k in range(1, int(i ** 0.5) + 1): #Проверяю не повторялся ли этот делитель, если не повторялся, то засчитываю его за делитель в devisors if i % k == 0 and k not in devlist: temp.append(k) devisors += 1 #Если различных делителей больше 6(перебраю до корня из числа), то заканчиваю цикл if devisors > 3: temp.clear() break #Если делителей 6, то добавляю все эти делители в архив, чтобы проверять в будущем не повторяются ли они if devisors == 3: for g in temp: devlist.append(i // g) devlist += temp #Сохраняю число nums.append(i) devlist.clear() #Ищу 2 делителя числа, которые не равны самому числу и максимальны for m in nums: t = 0 for j in range(m - 1, int(m ** 0.5) + 1, -1): if m % j == 0: t += 1 devlist.append(j) if t == 2: break print(devlist)[/pre2]

Ответов - 4

Aleksey6819: Ar3turrr Замените if i % k == 0 and k not in devlist: на if i % k == 0: и вы получите список чисел nums, у которых 6 делителей

Ar3turrr: Aleksey6819 пишет: вы получите список чисел nums, у которых 6 делителей Ответ действительно получился, но нам ведь нужны числа, делители которых различны между собой, верно?

Aleksey6819: Ar3turrr пишет: Ответ действительно получился, но нам ведь нужны числа, делители которых различны между собой, верно? По условию нам нужны числа, имеющие ровно 6 различных делителей. Делители должны быть различны не во всех числах, а в каждом числе.


elpov06: [pre2]for x in range(118811, 118973): a=[] y=x**0.5 q=y if x==(int(y))**2 : a.append(int(y)) #print(a) else: q=y+1 for i in range(1, int(q)): if x%i==0: a.append(i) a.append(x//i) if len(a)==6 : #print(x, sorted(a)) g=max(a) b=sorted(a) print(b[-2],b[-3])[/pre2] можно так решить



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