Задача к ЕГЭ по информатике на тему «делители числа» №18

Рассматривается множество целых чисел, принадлежащих числовому отрезку [854321; 1087654]. Найдите числа, нетривиальные делители которых образуют арифметическую прогрессию с разностью d = 10 (чисел > 1). В ответе через пробел для каждого такого числа (в порядке возрастания) запишите сначала само число, а потом – его минимальный нетривиальный делитель.

def divs(n): # функция , которая возращает список делителей или ложь если делители не образуют арифм. прогрессию с разностью 10
    a = []
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            a.append(i)
            if i != n//i:
                a.append(n//i)
    a.sort()
    if len(a)>1: # если у числа более 1 делителя
        for i in range(len(a)-1):
            if a[i]+10 != a[i+1]: # если у текущего делителя со следующим делителем разность составляет не 10
                return False # то такое число нам не подходит
    return a


for i in range(854321, 1087654+1):
    x = divs(i)
    if x != False and len(x) > 1:
        print(i, x[0])


Ответ: 887339 937 944759 967 1028171 1009 1052651 1021
Оцените статью
Я решу все!