Автор | Сообщение |
|
Отправлено: 20.04.23 19:41. Заголовок: 2910 25
Не могу найти ошибку в решении. У меня получается 10 подходящий числе, когда в ответе их 6(12 конечных делителей : 2). 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)
|
|
|
Ответов - 4
[только новые]
|
|
|
Отправлено: 20.04.23 21:05. Заголовок: Ar3turrr Замените i..
Ar3turrr Замените if i % k == 0 and k not in devlist: на if i % k == 0: и вы получите список чисел nums, у которых 6 делителей
|
|
|
|
Отправлено: 25.04.23 17:19. Заголовок: Aleksey6819 пишет: ..
Aleksey6819 пишет: цитата: | вы получите список чисел nums, у которых 6 делителей |
|
Ответ действительно получился, но нам ведь нужны числа, делители которых различны между собой, верно?
|
|
|
|
Отправлено: 25.04.23 18:09. Заголовок: Ar3turrr пишет: Отв..
Ar3turrr пишет: цитата: | Ответ действительно получился, но нам ведь нужны числа, делители которых различны между собой, верно? |
| По условию нам нужны числа, имеющие ровно 6 различных делителей. Делители должны быть различны не во всех числах, а в каждом числе.
|
|
|
|
Отправлено: 21.04.23 10:37. Заголовок: for x in range(11881..
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]) можно так решить
|
|
|
|