13.03.2026

Являются ли цифры натурального числа строго возрастающими. Решение на языке Python

Задача: Напишите программу, которая проверяет, являются ли цифры натурального числа строго возрастающими. Это означает, что каждая следующая цифра (при чтении числа слева направо) должна быть больше предыдущей. Например, число 123 подходит, а 321 или 122 — нет. Программа должна вывести «да», если условие выполняется, и «нет» в противном случае.

В этой публикации мы подробно разберём код, который решает задачу о строго возрастающих цифрах числа. Шаг за шагом разберём, как работает программа, и рассмотрим примеры её выполнения.

Программа решения на языке Python

n = int(input('Введите число:'))
k = 0
j = 0
m = 10
while n > 0:
    j += 1
    c = n % 10
    if c < m:
        k += 1
    m = c 
    n = n // 10
    
if k == j:
    print('да')
else:
    print('нет')

Как работает программа

1. Ввод числа

Пользователь вводит целое число. Оно сохраняется в переменной n. Предполагается, что число натуральное (положительное).

2. Инициализация переменных

  • k = 0 — счётчик, который будет увеличиваться каждый раз, когда очередная цифра оказывается меньше предыдущей (предыдущая цифра — та, что была обработана раньше, то есть стоящая справа).

  • j = 0 — счётчик количества цифр в числе.

  • m = 10 — переменная, которая будет хранить предыдущую цифру. Почему 10? Потому что цифры от 0 до 9, и 10 гарантированно больше любой из них. Это позволяет корректно обработать первую цифру.

3. Цикл обработки цифр

Цикл while n > 0: выполняется, пока в числе остаются цифры. На каждой итерации:

  • j += 1 — увеличиваем счётчик цифр.

  • c = n % 10 — берём последнюю цифру числа (остаток от деления на 10).

  • if c < m: — сравниваем текущую цифру с предыдущей (той, что была справа). Если текущая меньше — значит, порядок нарушен? Нет, давайте разбираться внимательно.

Мы идём по числу справа налево. Например, число 123. Последняя цифра — 3, затем 2, затем 1. Чтобы цифры слева направо возрастали (1 < 2 < 3), при движении справа налево они должны убывать (3 > 2 > 1). То есть каждая следующая (при движении справа налево) цифра должна быть меньше предыдущей. Именно это проверяет условие c < m — текущая цифра (которая левее) меньше предыдущей (которая правее)? Если да, то всё идёт правильно.

  • k += 1 — если условие выполняется, увеличиваем счётчик правильных соотношений.

  • m = c — обновляем «предыдущую» цифру на текущую для следующей итерации.

  • n = n // 10 — отбрасываем последнюю цифру числа (целочисленное деление на 10).

4. Проверка результата

После окончания цикла у нас есть:

  • j — количество цифр.

  • k — количество раз, когда текущая цифра оказалась меньше предыдущей (при движении справа налево).

Если все цифры строго возрастают слева направо, то при движении справа налево каждая следующая цифра будет меньше предыдущей, и таких случаев будет ровно столько же, сколько цифр? Но давайте посчитаем: для числа из j цифр сравнений будет j-1 (первая цифра не с чем сравнивать). Однако в коде k увеличивается на каждой итерации, включая первую? На первой итерации m = 10, и условие c < 10 всегда истинно, поэтому k увеличится. Значит, k всегда будет включать и эту «лишнюю» единицу. Поэтому после цикла k будет равно j только в том случае, если на всех последующих сравнениях условие тоже выполнялось. Фактически k равно количеству цифр, для которых выполняется c < предыдущая_цифра, а предыдущая для первой цифры — 10, что даёт истину. Таким образом, если все сравнения были истинны (то есть цифры действительно убывают справа налево), то k == j.

Если хотя бы одно сравнение ложно, то k будет меньше j, и программа выведет «нет».

Примеры работы

Пример 1: число 123

  • Инициализация: n=123, k=0, j=0, m=10

  • Итерация 1: c=3, 3<10 → k=1, m=3, n=12, j=1

  • Итерация 2: c=2, 2<3 → k=2, m=2, n=1, j=2

  • Итерация 3: c=1, 1<2 → k=3, m=1, n=0, j=3
    Цикл завершён. k=3, j=3 → выводится «да». Всё верно.

Пример 2: число 321

  • n=321

  • Итерация 1: c=1, 1<10 → k=1, m=1, j=1, n=32

  • Итерация 2: c=2, 2<1? Нет → k остаётся 1, m=2, j=2, n=3

  • Итерация 3: c=3, 3<2? Нет → k=1, m=3, j=3, n=0
    k=1, j=3 → выводится «нет». Правильно, цифры убывают.

Пример 3: число 122

  • n=122

  • Итерация 1: c=2, 2<10 → k=1, m=2, j=1, n=12

  • Итерация 2: c=2, 2<2? Нет → k=1, m=2, j=2, n=1

  • Итерация 3: c=1, 1<2? Да → k=2, m=1, j=3, n=0
    k=2, j=3 → выводится «нет». Цифры нестрого возрастают (есть повтор), поэтому ответ «нет».

Пример 4: однозначное число, например 5

  • n=5

  • Итерация 1: c=5, 5<10 → k=1, m=5, j=1, n=0
    k=1, j=1 → выводится «да». Однозначное число считается удовлетворяющим условию (тривиально).

Выводы

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

06.03.2026

Решение задач на цикл while в Python для 8 класса. Подробный разбор

Цикл while (цикл с предусловием) — одна из базовых конструкций в программировании, которую проходят в 8 классе на уроках информатики. Он позволяет выполнять блок кода снова и снова, пока условие остается истинным (True).

Многие ученики путаются, когда нужно использовать for, а когда while. Главное правило: while используется, когда мы заранее не знаем, сколько раз циклу нужно будет выполниться.

В этой публикации мы подробно разберем конкретную задачу, которая часто встречается в школьной программе, и научимся правильно применять цикл while в Python.

Теория: Как работает while?

Прежде чем перейти к задаче, вспомним синтаксис:

python
while условие:
    # действие 1
    # действие 2
    # ... (тело цикла)
  • Условие — это логическое выражение (например, x < 10 или a != 0).

  • Тело цикла — это команды, которые будут повторяться, пока условие истинно.

  • Важно! В теле цикла должна происходить смена переменной, входящей в условие, иначе цикл будет бесконечным (программа зависнет).

Разбор задачи: Ввод чисел до нуля

Это классическая задача для 8 класса, которая отлично иллюстрирует суть цикла while.

Условие задачи:

Написать программу, которая считывает целые числа с клавиатуры. Если число четное, программа должна вывести его на экран. Как только пользователь введет число 0, программа должна завершить работу и вывести сообщение "Программа остановлена".

Почему здесь подходит while?

Мы не знаем, сколько чисел введет пользователь. Он может ввести 5 чисел, а может 100. Условие остановки — ввод нуля. Это идеальный случай для цикла с предусловием.

Шаг 1: Разработка алгоритма

  1. Начало.

  2. Запросить у пользователя число (первое).

  3. Проверка: Пока число не равно 0, делать следующее:

    • Если число четное (делится на 2 без остатка), то вывести его.

    • Снова запросить у пользователя число (самое важное!).

  4. Если число равно 0, выйти из цикла.

  5. Вывести сообщение о завершении.

  6. Конец.

Шаг 2: Написание кода на Python

Давайте реализуем этот алгоритм. Обратите внимание, что запрос числа находится в двух местах: перед циклом (чтобы было что проверять в первый раз) и в конце тела цикла (чтобы ввести очередное число).

python
# Информатика, 8 класс: пример использования цикла while
print("Вводите числа. Для остановки введите 0.")
# Запрашиваем первое число
number = int(input("Введите число: "))
# Запускаем цикл: пока number не равен 0
while number != 0:
    # Проверяем четность
    if number % 2 == 0:
        # Выводим четное число
        print(f"Четное число: {number}")
    # СНОВА запрашиваем число. Это ключевой момент!
    # Если забыть эту строку, условие никогда не изменится, и цикл станет бесконечным.
    number = int(input("Введите число: "))
# Как только number стал равен 0, программа идет сюда:
print("Программа остановлена. Вы ввели 0.")

Шаг 3: Проверка работы программы (Тестирование)

Запустим программу и введем несколько чисел (то, что вводит пользователь, выделено жирным для наглядности):

Вводите числа. Для остановки введите 0.
Введите число: 5 (не четное -> ничего не выводим)
Введите число: 8 (четное -> выводим)
Четное число: 8
Введите число: 12 (четное -> выводим)
Четное число: 12
Введите число: 7 (не четное -> ничего не выводим)
Введите число: 0 (условие while 0 != 0? Ложь. Цикл завершен)
Программа остановлена. Вы ввели 0.

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

Типичные ошибки новичков (8 класс)

Разбирая задачи на цикл while на уроках информатики, ученики часто допускают одни и те же ошибки. Запомни их, чтобы не терять баллы:

  1. Забыли изменить переменную в теле цикла.

    • Ошибка: В коде выше забыть написать вторую строчку number = int(input(...)).

    • Результат: Если первое число не 0, программа начнет выводить его бесконечно (или четное число бесконечно), так как значение number не меняется. Программа "зависнет".

  2. Путаница с else.

    • В цикле while в Python тоже может быть блок else, который выполняется, если выход из цикла произошел не по break, а естественным путем.

Заключение

Цикл while в Python — мощный инструмент для решения задач, где количество шагов заранее неизвестно. Мы разобрали простую, но показательную задачу, которая часто встречается на уроках информатики в 8 классе.

Главные выводы:

  • Используйте while, когда не знаешь точного числа повторений.

  • Всегда следите за тем, чтобы условие цикла когда-нибудь стало ложным.

  • Не забывайте менять переменные внутри тела цикла.

Попробуйте модифицировать задачу самостоятельно: например, сделать подсчет суммы введенных чисел или подсчет количества четных чисел. Это поможет лучше закрепить материал.

19.11.2025

Задание 25 (ЕГЭ по информатике) поиск чисел, которые являются степенью простого числа с натуральным показателем степени, большим 1

 Задача (№ 25, ЕГЭ по информатике)

Напишите программу, которая перебирает целые числа, большие 700 000, в порядке возрастания и ищет среди них такие, которые являются степенью простого числа с натуральным показателем степени, большим 1.
В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, а во втором столбце - для каждого из чисел соответствующие им простое число.

Например, число 27 = 33

Количество строк в таблице для ответа избыточно.

Алгоритм решения

  1. Перебираем числа, начиная с 700 001.

  2. Для каждого числа находим его разложение на простые множители с учётом кратности (функция f(n)).

  3. Проверяем два условия:

    • Количество множителей в разложении больше 1 (показатель степени > 1).

    • Все множители одинаковые (число является степенью одного простого числа).

  4. Как только находим 5 таких чисел, завершаем перебор.

Программа решения задачи на языке Python

def f(n):
    d = []
    for k in range(2, int(n**0.5) + 1):
        while n % k == 0:
            d.append(k)
            n //= k
    if n > 1:
        d.append(n)
    return d

k = 0
x = 700001
while k != 5:
    y = f(x)
    y1 = set(y)
    if len(y) > 1 and len(y1) == 1:
        print(x, y[0])
        k += 1
    x += 1
Пояснения
  • Функция f(n) возвращает список простых делителей числа n (например, для числа 72 → [2, 2, 2, 3, 3]).

  • y1 = set(y) оставляет только уникальные делители. Если все делители одинаковые, длина множества будет равна 1.

  • Условие len(y) > 1 гарантирует, что показатель степени больше 1.

Результат выполнения программы

703921 839

704969 89

707281 29

727609 853

734449 857