Тема 25. Обработка целочисленной информации

25.01 Делители числа

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#27891

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [198374  ; 295381  ], числа, имеющие ровно 7  различных нечётных натуральных делителей. Для каждого числа выведите все эти семь делителей на экран в порядке возрастания (для каждого числа с новой строки).

Показать ответ и решение

Решение через цикл:

Запустим цикл в рамках, заданных условием. Для каждого числа найдём делители от 1 до его корня, таким образом программа будет работать точно и быстро. Если нашли делитель - проверим, есть ли дополняющий к нему (поделив число на уже найденный). Берём только нечётные делители, вносим их в список, параллельно увеличивая счётчик. Если стало более 7 делителей - завершаем перебор, ведь смысла идти дальше нет. В конце, если попалось ровно 7 делителей, выведем их.

a = 198374 # Зададим границы цикла
b = 295381
for i in range(a, b + 1): # +1 чтобы было включительно
    divs = []   # Массив, в который будем сохранять подходящие делители
    counter = 0  # Счетчик делителей числа
    for j in range(1, int(i**0.5) + 1):
        if i % j == 0: # Если нашли делитель
            if j % 2 == 1: # Если делитель нечетный, то он подходит
                divs.append(j)  # Сохраняем делитель
                counter += 1 # Увеличиваем счётчик
            # Если дополняющий делитель нечетный
            # и мы его еще не добавили, то он подходит
            if i // j % 2 == 1 and j != i // j:
                divs.append(i // j) # Сохраняем делитель
                counter += 1 # Увеличиваем счётчи
        # Оптимизируем прогу, выпрыгиваем из чисел с большим числом делителей
        if counter > 7:
            break
    if counter == 7: # Если нашли нужное число
    # Выводим делители в порядке возрастания без []
        print(*(sorted(divs)))

Ответ: 1 7 49 343 2401 16807 117649 1 5 25 125 625 3125 15625

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!