стереть
Класс
8 9 10 11
Нужно авторизоваться
Нужно авторизоваться
Нужно авторизоваться
Нет аккаунта?
При наличии аккаунта на платформе можно
Введите больше 6 символов
Проблемы со входом?
Введи последние 4 цифры номера, с которого
поступит звонок. Трубку брать не нужно.
Повторный звонок через
сек.
Добро пожаловать!
Зарегистрируйся и получи Демо мастер-группы на 10 дней по любимым предметам бесплатно.
Добро пожаловать!
Как тебя зовут?
Введите не меньше 2 символов
Привяжем номер телефона
Введите не меньше 2 символов
Привяжем номер телефона
Повторный звонок через
30 сек.
Теперь нужно подтвердить номер - введи последние 4 цифры номера, с которого поступит звонок. Трубку брать не нужно
Введите не меньше 2 символов
Придумаем пароль
Почти закончили! Теперь нужно создать надежный пароль
Введите не меньше 2 символов
Немного о тебе
В какой класс ты переходишь?
Укажи, какие предметы будешь или хочешь сдавать
Введите не меньше 2 символов
На почту 12345@mail.ru отправлена ссылка для сброса пароля.
OK
Информатика

Задача по теме: "Поиск делителей"

Информатика
Задание 25 Поиск делителей
Подсказка
За подсказку ты получишь лишь половину баллов
Использовать
Автор
Крылов С.С., Чуркина Т.Е. Информатика: единый государственный экзамен. — Москва: Издательство "Национальное образование", 2023. — 256 с. Материалы публикуются в учебных целях
Просмотры
960
banner-img

Пусть S — сумма различных натуральных делителей целого числа, являющихся простыми числами, не считая самого числа.

Напишите программу, которая перебирает целые числа, большие 550 000, в порядке возрастания и ищет среди них такие, для которых значение S оканчивается на цифру 7. Программа должна найти и вывести первые 5 таких чисел и соответствующие им значения S.

Формат вывода: для каждого из 5 таких найденных чисел в отдельной строке сначала выводится само число, затем значение S. Строки выводятся в порядке возрастания найденных чисел.

 Например, для числа 20 S =2+5= 7.

 

loading
Решение

Решение:

Для нахождения всех подходящих значений напишем программу:

 

def prime(q):
    divs = []
    for d in range(1, round(q**0.5) + 1):
        if q % d == 0:
            divs += [d, q//d]
    divs = sorted(set(divs))[1:-1]
    return True if divs == [] else False

def s(x):
    divs = []
    for d in range(1, round(x**0.5) + 1):
        if x % d == 0:
            divs += [d, x//d]
    divs = sorted(set(divs))[1:-1]
    s1 = sum([el for el in divs if prime(el) is True])
    return s1

cnt = 0
for x in range(550001, 1000000):
    if str(s(x))[-1] == '7':
        print(x, s(x))
        cnt += 1
    if cnt == 5:
        break


Ответ: 550018 2337 550059 1197 550087 257 550099 1217 550137 117

На экзамене это задание принесло бы тебе 2/2 баллов.
Решать еще

Сообщение об ошибке

Расскажите, в каком месте допущена ошибка, мы как можно быстрее её исправим. Спасибо за обратную связь!

Здравствуйте!

Выберите информацию о себе ниже

pay-success-img

Оплата прошла успешно!

pay-un-success-img

Оплата не прошла

Попробуйте снова