#Если ученик попадется смышленый, он поймет, что от него требуются степени простых чисел.
#Если числа не будут простыми, то в нашу прогрессию будут добавлены лишние числа -
#делители самих членов прогрессии, которые нам не нужны
def isprime(x):
    sq = int(x**0.5)
    for i in range(2,sq+1): #Стандартная функция определения простоты, объяснял в прошлом способе решения
        if x%i==0:
            return False
    return x>1
#------------------------------------------------------------------------------------------------------------------------------------------
a = [x for x in range(1,1000) if isprime(x)] #Фильтруем диапазон, заданный на глазок. Это - наши простые основания.
for osnovanie in a: #Перебираем числа из списка оснований
    for stepen in range(4,30): #В данном случае, stepen+1 - длина нашей прогрессии.
                                # +1 потому-что в прогрессии присутствует единица - нулевая степень
        if osnovanie**stepen in range(10000000,20000000): #Основание**степень - наше число. Проверяем, лежит ли оно в диапазоне
            print(osnovanie**stepen,osnovanie) #Если лежит, то оно наше. Выводим число и основание. Основание - знаменатель