Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 24 ноября 2025 17:25

На вход подаётся четырёхзначное натуральное число 1737. Написать код на python вывода наибольшее простое число, которое можно составить из цифр введенного числа не переставляя их порядок. Если из цифр невозможно составить натуральное число или введено не четырёхзначное натуральное число, то выводится цифра 0.

Ответ нейросети

24 ноября 2025 17:25

Ниже подробное решение с пояснениями и примером. Цель: понять алгоритм и увидеть рабочий код на Python.

Что делает задача

  • Ввод: четырехзначное натуральное число.
  • Можно составлять новые числа из цифр входного числа по порядку, без перестановки их местами (то есть берём любую непустую подпоследовательность цифр, сохраняющую исходный порядок).
  • Нужно найти наибольшое простое число среди таких чисел. Если это невозможно или ввод не четырехзначный, выводим 0.

Какой подход используется

  • Проверяем ввод: число должно быть от 1000 до 9999 включительно.
  • Перебираем все непустые подпоследовательности цифр в сохранённом порядке. Это удобно сделать через битовые маски для позиции цифр.
  • Для каждой подпоследовательности строим само число (по порядку следования цифр в исходном числе).
  • Проверяем каждое число на простоту (для чисел до 9999 достаточно простой перебор делителей до sqrt(n)).
  • Храним максимум найденного простого числа. В конце выводим максимум (или 0, если простого не было).

Пошаговый разбор на примере 1737

  • Все подпоследовательности (упрощённо): 1,7,3,7,17,13,17,73,77,137,177,173,1737 и т.д.
  • Среди них простые: 7,17,13,37,73,137,173 и т.д. Наибольший из допустимых — 173.
  • Значит для входа 1737 программа выведет 173.

Код на Python

import sys

def is_prime(n: int) -> bool:
    if n < 2:
        return False
    if n == 2:
        return True
    if n % 2 == 0:
        return False
    limit = int(n ** 0.5)
    i = 3
    while i <= limit:
        if n % i == 0:
            return False
        i += 2
    return True

def max_prime_from_digits(num: int) -> int:
    s = str(num)
    n = len(s)
    max_p = 0

    # Проходим по всем непустым подпоследовательностям (маски)
    for mask in range(1, 1 << n):
        val = 0
        for i in range(n):
            if (mask >> i) & 1:
                val = val * 10 + int(s[i])
        if val > 1 and is_prime(val):
            if val > max_p:
                max_p = val

    return max_p

def main():
    data = sys.stdin.read().strip()
    if not data:
        print(0)
        return

    try:
        num = int(data)
    except ValueError:
        print(0)
        return

    # Проверка: должны быть четыре цифры
    if 1000 <= num <= 9999:
        ans = max_prime_from_digits(num)
        print(ans if ans > 0 else 0)
    else:
        print(0)

if __name__ == "__main__":
    main()

Как использовать

  • Сохраните код в файл, например, solve.py.
  • Запустите: python solve.py
  • Введите число, например 1737. Программа выведет 173.

Дополнительные заметки

  • Для числа до 9999 перебор подпоследовательностей ограничен 2^4 - 1 = 15 вариантов, поэтому решение очень быстрое.
  • Если вход может быть не четверизначным, программа вернёт 0 в соответствии с условием задачи.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

На вход подаётся четырёхзначное натуральное число 1737. Написать код на python вывода наибольшее простое число, которое можно составить из цифр введенного числа не переставляя их порядок. Если из цифр невозможно составить натуральное число или введено не четырёхзначное натуральное число, то выводится цифра 0.
Ниже подробное решение с пояснениями и примером. Цель: понять алгоритм и увидеть рабочий код на Python. Что делает задача - Ввод: четырехзначное натуральное число. - Можно составлять новые числа из цифр входного числа по порядку, без перестановки их местами (то есть берём любую непустую подпоследовательность цифр, сохраняющую исходный порядок). - Нужно найти наибольшое простое число среди таких чисел. Если это невозможно или ввод не четырехзначный, выводим 0. Какой подход используется - Проверяем ввод: число должно быть от 1000 до 9999 включительно. - Перебираем все непустые подпоследовательности цифр в сохранённом порядке. Это удобно сделать через битовые маски для позиции цифр. - Для каждой подпоследовательности строим само число (по порядку следования цифр в исходном числе). - Проверяем каждое число на простоту (для чисел до 9999 достаточно простой перебор делителей до sqrt(n)). - Храним максимум найденного простого числа. В конце выводим максимум (или 0, если простого не было). Пошаговый разбор на примере 1737 - Все подпоследовательности (упрощённо): 1,7,3,7,17,13,17,73,77,137,177,173,1737 и т.д. - Среди них простые: 7,17,13,37,73,137,173 и т.д. Наибольший из допустимых — 173. - Значит для входа 1737 программа выведет 173. Код на Python ```python import sys def is_prime(n: int) -> bool: if n < 2: return False if n == 2: return True if n % 2 == 0: return False limit = int(n ** 0.5) i = 3 while i <= limit: if n % i == 0: return False i += 2 return True def max_prime_from_digits(num: int) -> int: s = str(num) n = len(s) max_p = 0 # Проходим по всем непустым подпоследовательностям (маски) for mask in range(1, 1 << n): val = 0 for i in range(n): if (mask >> i) & 1: val = val * 10 + int(s[i]) if val > 1 and is_prime(val): if val > max_p: max_p = val return max_p def main(): data = sys.stdin.read().strip() if not data: print(0) return try: num = int(data) except ValueError: print(0) return # Проверка: должны быть четыре цифры if 1000 <= num <= 9999: ans = max_prime_from_digits(num) print(ans if ans > 0 else 0) else: print(0) if __name__ == "__main__": main() ``` Как использовать - Сохраните код в файл, например, solve.py. - Запустите: python solve.py - Введите число, например 1737. Программа выведет 173. Дополнительные заметки - Для числа до 9999 перебор подпоследовательностей ограничен 2^4 - 1 = 15 вариантов, поэтому решение очень быстрое. - Если вход может быть не четверизначным, программа вернёт 0 в соответствии с условием задачи.