Регистрация
Войти
Стать экспертом Правила
Информатика

Напишите программу на питоне или скажите как решать. Рассматриваются целые числа, принадлежащих числовому отрезку [416782; 498324], которые представляют собой произведение трёх различных простых делителей, оканчивающихся на одну и ту же цифру. В ответе запишите количество таких чисел и разницу между максимальным и минимальным из них. (Ответ 490 или что-то такое)

ОТВЕТЫ

Делаем буквально то, что написано в условии: получаем список простых делителей для каждого числа, если их оказалось три и все они различные, то проверяем, не оканчиваются ли все они на одну цифру. Если и это совпало, добавляем это число в список. В конце выводим : количество чисел в списке и разность между максимальным и минимальным значением.

Производительность тут не так важна, так что можно ничего не оптимизировать, и так получается за разумное время.

Код (python 3):

answer = []

for number in range(416782, 498324 + 1):

   prime_divisors, possible_divisor, current = [], 2, number

   while possible_divisor ** 2 <= current:

       if current % possible_divisor == 0:

           prime_divisors.append(possible_divisor)

           current //= possible_divisor

       else:

           possible_divisor += 1

   if current != 1:

       prime_divisors.append(current)

   if len(prime_divisors) == 3 and len(set(prime_divisors)) == 3:

       last_digit = prime_divisors[0] % 10

       if all(p % 10 == last_digit for p in prime_divisors):

           answer.append(number)

print(len(answer))

print(max(answer) - min(answer))

324
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам