С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 45

Найти числа на отрезке, у которых ровно 5 нечетных делителей

05.10.2021, 20:28. Показов 2508. Ответов 11

Студворк — интернет-сервис помощи студентам
Здравствуйте, не могу решить задачу с таким условием:

Найти все натуральные числа, принадлежащие отрезку [47*10^6; 52*10^6], у которых ровно 5 различных нечетных делителей (количество четных может быть любым).
Для каждого найденного числа запишите его значение и значение наибольшего нечетного делителя.

Вот мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
k = 0
cnt = 0
for num in range(4*10**6, 52*10**6):
  delit = []
  sch = 0
  for i in range(1, num//2+1, 2):
    if num % i == 0 and len(delit) < 5:
      delit.append(i)
    elif len(delit) == 4:
      print(num, delit)
      break
Подскажите, пожалуйста, что нужно исправить для того, чтобы программа работала корректно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2021, 20:28
Ответы с готовыми решениями:

Найти числа на отрезке, у которых ровно 5 различных нечетных делителей
Добрый день, пытаюсь решить задачу, но она выполняется слишком долго. Условие: Найдите все натуральные числа, принадлежащие отрезку...

Найти числа, у которых ровно пять различных нечётных делителей
Находятся все натуральные числа, принадлежащие отрезку , у которых ровно пять различных нечётных делителей и выводятся в порядке...

Найдите все натуральные числа, у которых ровно пять различных нечётных делителей
Найдите все натуральные числа, принадлежащие отрезку , у которых ровно пять различных нечётных делителей (количество чётных делителей может...

11
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,294
05.10.2021, 20:35
вы в каждой итерации первого цикла заново создаете пустой список в который добавляете число и снова его перезаписываете на пустой. это так бегло первая ошибка. вторая вы не проверяете делитель на нечетность
Цитата Сообщение от Rumynoff Посмотреть сообщение
5 различных нечетных
с функциями знакомы?
0
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 45
05.10.2021, 20:40  [ТС]
Semen-Semenich, с помощью этого списка я проверяю количество делителей, а потом если делителей ровно 4, то программа выводит число и его делители, разве это не так должно работать? И зачем мне проверять делитель на четность, если у меня второй цикл, который перебирает делители числа, установлен с шагом 2(т.е. каждое нечетное число)
0
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,294
05.10.2021, 20:45
Rumynoff, чет я упустил про шаг. ну тогда к вопросу о списке
так понятней будет?
Python
1
2
3
4
5
6
for num in range(100):
  delit = []
  # тут второй цикл но суть та же
  delit.append(num)
 
print(delit)
хоть миллиард итераций но в списке последнее значение num потому что список перезаписывается. вынести список за пределы цикла.

Python
1
2
3
4
5
6
delit = []
for num in range(100):
  # тут второй цикл но суть та же
  delit.append(num)
 
print(delit)
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
05.10.2021, 20:52
Цитата Сообщение от Rumynoff Посмотреть сообщение
[47*10^6; 52*10^6]
Цитата Сообщение от Rumynoff Посмотреть сообщение
for num in range(4*10**6, 52*10**6):
Вот тут несовпадение, вероятно опечатка, скорее всего во второй строчке (с кодом). Там у вас 4*10**6, а должно быть 47*10**10. Или наоборот, проверьте.

Добавлено через 2 минуты
И второй аргумент в функции range должен быть "+1", т.к. квадратные скобки в условии предполагают что границы включены в диапазон.
0
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 45
05.10.2021, 20:54  [ТС]
Semen-Semenich, Да, я понял, спасибо, а как я могу ускорить программу, чтобы она работала не по 40 минут?
А так же почему теперь при запуске программа сразу выводит первое число из цикла?
Python
1
2
3
4
5
6
7
8
9
10
11
k = 0
cnt = 0
delit = []
for num in range(47458320, 52*10**6):
  sch = 0
  for i in range(1, num//2+1, 2):
    if num % i == 0 and len(delit) < 5:
      delit.append(i)
    elif len(delit) == 4:
      print(num, delit)
      break
Или мне стоит что-то еще исправить?
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
05.10.2021, 21:01
Rumynoff, А единица по условиям считается делителем? Она вроде нечетная, и на нее любое натуральное число будет делиться.
0
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,294
05.10.2021, 21:11
Цитата Сообщение от Rumynoff Посмотреть сообщение
как я могу ускорить программу, чтобы она работала не по 40 минут
заменить функцию len на счетчик. каждый раз пересчитывать длину списка уже время (хоть и маленькое) ну и не корректно elif. представьте у вас делитель четный, if не срабатывает переходим к elif и о чудо там 4 первых делителя, их выводим и досвидос.
47458320 [1, 3, 5, 7] а по условию
Цитата Сообщение от Rumynoff Посмотреть сообщение
ровно 5 различных нечетных делителей
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
05.10.2021, 21:17
Python
1
2
3
4
5
6
7
8
9
10
for num in range(47 * 10 ** 6, 52 * 10 ** 6 + 1):
    dev_count = 0
    for dev in range(1, num // 2 + 2):
        if num % dev == 0:
            dev_count += 1
            dev_max = dev
            if dev_count == 6:
                break
    if dev_count == 5:
        print(num, dev_max)
Semen-Semenich,
А зачем там вообще список делителей?
В условиях же написано
Цитата Сообщение от Rumynoff Посмотреть сообщение
Для каждого найденного числа запишите его значение и значение наибольшего нечетного делителя
Там нужно только последний, список не нужен.
1
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,294
05.10.2021, 21:21
anton78spb, я в курсе. автора хотел подвести под это решение
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
05.10.2021, 21:23
Semen-Semenich, Сорри
0
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
05.10.2021, 21:30
Rumynoff,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def primes(n) :
    res = {2}
    prime = [True] * (n+1)
    for i in range(3, n + 1, 2) :
        if not prime[i]:
            continue
        res.add(i**4)
        for j in range(i * i, n+1, i):
            prime[j] = False
    return sorted(res)
    
    
cnt = 0
delit = []
 
a = 47458320
b = 52000000
pr_quat = primes(int(b**.25) + 1)
for num in pr_quat:
    tmp = num
    while tmp < a:
        tmp <<= 1
    if tmp <= b:
        cnt += 1
        delit.append((tmp, num))
        print(tmp, num)
print('end')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.10.2021, 21:30
Помогаю со студенческими работами здесь

Найти числа, принадлежащие отрезку [35 000 000; 40 000 000], у которых ровно 5 различных нечётных делителей
Найдите все натуральные числа, принадлежащие отрезку , у которых ровно пять различных нечётных делителей (количество чётных делителей может...

Числа, у которых ровно пять различных нечётных делителей
Найдите все натуральные числа, принадлежащие отрезку , у которых ровно пять различных нечётных делителей (количество чётных делителей может...

Найдите все натуральные числа,у которых ровно пять различных нечётных делителей
Найдите все натуральные числа, принадлежащие отрезку , у которых ровно пять различных нечётных делителей (количество чётных делителей может...

Найти сумму и количество целых чисел у которых ровно Y нечетных делителей
Задача по с# на практику если можно с блок-схемой Найти сумму и количество целых чисел из промежутка от 150 до 460 у которых ровно Y...

Найдите все числа, принадлежащие заданному отрезку, у которых ровно пять различных нечётных делителей
Найдите все натуральные числа, принадлежащие отрезку , у которых ровно пять различных нечётных делителей (количество чётных делителей может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru