Перейти к содержанию
MediaSchool

Цикл с условием. Алгоритм Евклида и цифры натурального числа

Программирование while и объяснение завершения на натуральных исходных данных. Разобрать алгоритм Евклида для НОД и последовательное выделение цифр числа через частное и остаток; для основания b использовать 2 ≤ b ≤ 10. Личная практика на коротких заготовках: дополнить и запустить оба алгоритма, сверить трассировку и результат с ручной проверкой.

Открыт · Презентация · Методичка · Рабочий лист

Конспект урока

Выполнять и проверять Python-цикл while: алгоритм Евклида и выделение цифр натурального числа в позиционной системе с основанием от 2 до 10.

Python 3: while условие: проверяет условие перед каждой итерацией. При истине выполняется всё тело с отступом, затем новая проверка; при лжи тело пропускается и выполняется код после цикла. При нормальном завершении после k итераций было k+1 проверок. В этих программах нет break/continue. Алгоритм Евклида использует целые 0≤a,b≤1000, не оба нули. Если b!=0, остаток r=a%b, затем a=b и b=r. r вычисляется до перезаписи a. Пары(a,b) и(b,r) имеют одинаковые общие делители, а при b>0 остаток 0≤r<b; положительный второй компонент убывает, значит цикл завершится. При b=0 НОД равен a. Для выделения цифр основные n натуральные 1…1000000, основание b — целое 2…10. Во вводе n записано привычными десятичными цифрами: это значение числа, а не строка в основании b. d=n%b выделяет последнюю цифру записи в основании b, n//b удаляет её; при b=10 получаем прежние операции %10 и //10; при n>0 новое целое меньше прежнего. Сумма накапливается в s с начального 0. Числовая запись не хранит ведущие нули. Отдельный B1 расширяет подсчёт цифр на число 0: у десятичной записи 0 одна цифра, хотя while n>0 не исполняется. Проверка технического лимита не является доказательством бесконечности. Выделенные цифры получаются от младшей к старшей; для обычной записи их читают в обратном порядке. Значения 0…b−1 при b≤10 записываются обычными цифрами. В этой практике n>0; число 0 отдельно рассматривается вB1.

Для работы достаточно бумаги, ручки и памятки. Сохраняй первую попытку; исправления отмечай другим знаком.

Безопасное начало

Сухие руки, без напитков у техники. Провода и разъёмы не трогай, о неисправности сообщи учителю. Работай по правилам кабинета. Две полные минуты в середине урока — без экрана и заданий. Внешний ИИ, аккаунты и личные данные не требуются.

Что уже нужно знать

19: цикл с предусловием у исполнителя;23–27: Python 3, int(input()), присваивания по порядку, сравнения, // и %, проверка по строкам. Формулы НОД и обработки цифр даны в памятке.

S0. Чем цикл с предусловием отличается от команды «повторить ровно 5 раз»?

Устная проба без отметки.

Предусловие и убывающая величина

while проверяет условие перед каждым телом. Евклид: r=a%b; a=b; b=r. Цифры: значение n>0, основание b от 2 до 10; d=n%b, затем n=n//b. Цифры выходят справа налево; запись восстанавливают в обратном порядке. При n>0 и b≥2 целое n уменьшается. Для суммы s=s+d до удаления цифры.

ОперацияРезультат
d=n%bПоследняя цифра записи в основании b
n=n//bЗначение без последней цифры
b=10Привычная десятичная запись

Во вводе n — значение, записанное десятичными цифрами; b — отдельная строка 2…10. Например, n=13,b=2 означает разобрать число 13, а не считать запись 13 двоичной. ВB1 подсчёт десятичных цифр для n≥0 остаётся отдельным случаем.

Концептуальная иллюстрация. Точные данные определены условиями, таблицами и схемами; предметы на рисунке не являются входными данными.

Личная проба

C1. Python 3: n=0; s=0; while n>0: s=s+1; затем print(s) после цикла. Тело состоит только из s=s+1. Сколько итераций, проверок и что напечатается?

Одна минута лично, затем две на разбор. Памятка разрешена.

Алгоритм Евклида

Другой пример: a=15,b=6. После первого тела пара(6,3), после второго(3,0). Следующая проверка ложна, НОД 3. Остаток вычисляют до перезаписи пары. В A1 составь собственную таблицу на других входах.

A1. Евклид: код ниже; входы 48 затем 18 и отдельно 7 затем 0 (две строки). До запуска запиши пары (a,b) после тел и вывод. Для 7/0 укажи, вычислялся ли %. Первый случай проверь на ПК, второй вручную.

a=int(input())
b=int(input())
while b!=0:
    r=a%b
    a=b
    b=r
print(a)

Заготовка для своей записи:

После итерацииa / b / r
1
2
3

Сначала своя запись и основание, затем сверка.

Полная пауза

Две минуты без проекции, чтения, вычислений и обсуждения. Отведи взгляд и смени позу.

Выделяем цифры в основании b

Другой пример n=7,b=2. Остатки d по шагам 1,1,1, новые n3,1,0, суммы s1,2,3. Цифры выделены справа налево, обычная запись 111₂; 4+2+1=7. При b=10 те же действия дают десятичные цифры. ВA2 другие входы: сначала собственная трасса, затем запуск.

A2. Две строки ввода: значение n (натуральное 1…1000000, ввод десятичными цифрами), затем основание b (2…10). Составь Python 3: s=0; пока n>0, выделить d=n%b, прибавить d к s, удалить цифру n=n//b; после цикла вывести s. До проверки запиши в тетради код и полные трассы (n,d,s) для 205/10 и 13/2. В таблице листа запиши только цифры справа налево, обычную запись и сумму; проверь запись по весам. Один случай запусти, второй можно проверить вручную.

Заготовка для своей записи:

СлучайЦифры справа налево / запись / сумма; трасса в тетради
205; b=10
13; b=2

Семь минут: три на свои трассы, три на исправление/проверку, одна на сверку. В коротком варианте — шесть минут.

Концептуальная иллюстрация. Точные данные определены условиями, таблицами и схемами; предметы на рисунке не являются входными данными.

Ноль и смысл счётчика

Для натурального n8 цикл удаления цифр выполняется один раз, для n80 два раза. Но для числа 0 условие n>0 сразу ложно. Если задачей является число цифр записи, а не число исполнений тела, нужно отдельно определить результат для 0. Проверку нуля делай до изменения исходного n.

Данные моделиИтерации удаления
n81
n802
n00, нужен отдельный смысловой случай

B1. Подсчёт цифр расширили на целые n≥0. Алгоритм:k=0; пока n>0, выполнить k=k+1 и n=n//10; после цикла вывести k. Для входа 0 сравни факт с числом цифр десятичной записи 0. Исправь начальное значение k до цикла с помощью if/else и проверь также 7 и 10.

Три минуты на свою попытку, затем одна минута на сверку основания. Допустимы разные корректные решения.

Проверка вымышленного ответа ИИ

AI1. Вымышленный ИИ предлагает тело Евклида a=b; b=a%b и уверяет, что порядок не важен. Исходные a=14,b=8. Проверь первую итерацию и итог этого ошибочного цикла while b!=0; сравни с НОД 14 и 8. Исправь тело с временным r и повтори вход.

Это заранее составленный учебный пример. Самостоятельно проверь конкретный шаг; обращение к сервису не требуется.

Помощь и резерв

  • Теряет старое a. Сначала вычисли r, потом перезаписывай a.
  • Не уменьшает n. В A2 уменьши n командой n=n//b; в десятичном B1 используют n=n//10.
  • Путает%и//. Подпиши извлечение и удаление цифры.
  • Считает 0 числом без цифр. Различи число итераций и запись нуля.

D1. Резерв. Пусть целые a=q*b+r и b>0. Объясни двумя направлениями, почему общий делитель a,b делит b,r, а общий делитель b,r делит a,b. Как это помогает алгоритму Евклида?

D1 — 3–4 минуты для быстро справившихся после основной работы; иначе отдельный резерв следующего занятия. H1, весь тест и шесть новых случаев не складываются в одно обязательное домашнее задание.

Индивидуальный итог

Четыре полные минуты лично. Условия заранее на бумаге. Памятка и разобранные модели разрешены; ключи и веб-разбор закрыты. Учитель не даёт учебных подсказок. Сбор после четырёх минут.

E1. В алгоритме Евклида while b!=0 тело вычисляет a%b. Если исходно a=11,b=0, будет ли деление на 0 и что выведет print(a) после цикла?

E2. Одна итерация Евклида: исходно a=14,b=8; r=a%b; a=b; b=r. Каковы r и новая пара(a,b)?

E3. Натуральное n>0 заменяют на n//b при целом b от 2 до 10. Почему это помогает циклу while n>0 завершиться?

Разбор после своей попытки

После исправления выбери один новый пример из самопроверки.

Материалы и самопроверка

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

Самопроверка на сайте: шесть вопросов с пояснениями, отдельно 5–7 минут. Бумажная версия с письменными основаниями и разбором — 8–12 минут. Все шесть новых письменных случаев — ещё 8–10 минут; выбирай прежде всего случай к своей ошибке. Эти модули не прибавляют к основным 45 минутам и не задаются целиком вместе с H1 автоматически. Пояснения и новые случаи для бумажного разбора есть в плане учителя.

Домашний перенос

H1. Домой 5–7 минут,ПКнеобязателен. 1) Евклид для 21 и 14: выпиши пары после тел и НОД. 2) Для n=34,b=5 выделяй d=n%b, затем n=n//b; выпиши цифры справа налево, восстанови запись в основании 5 и найди сумму цифр. Проверь запись по весам.

Полное условие и памятка есть на листе. Решение запиши в тетради. Достаточно 5–7 минут с сохранённой опорой.

Источники

ФРП базового уровня: содержание 8 класса, печатные с.9–10; тематическое планирование, с.35–37. Выделение цифр натурального числа в позиционной системе с основанием от 2 до 10. Python 3 — один из допускаемых ФРП языков. Часы и ссылки КТП сохранены. Учебник школы не указан; номера параграфов не назначены.

Самопроверка

Проверь себя

6 вопросов по теме «Цикл while: Евклид и цифры: самопроверка». Выбери ответ, прочитай объяснение и попробуй ещё раз, если ошибся.

Открыть отдельно

Вопрос 1 из 6

Тренировка
В Python 3 когда while проверяет условие?

Без отметки и ограничения времени. Первый ответ учитывается отдельно от исправлений. При обновлении страницы ответы сбросятся.

Скачать и открыть

Материалы урока

6 материалов

Подготовка к уроку

2 материала

Рабочие листы и практика

3 материала

Проверка знаний

1 материал

От сообщества

Материалы сообщества0

Дополнения от учителей к этому уроку. Проверены модерацией, но не являются редакционным контентом MediaSchool.

Поделиться материалом

Поделитесь первым материалом

Рабочий лист, презентация или методичка помогут другим учителям подготовиться к уроку.

Комментарии

Войдите, чтобы оставлять комментарии.

Пока нет комментариев. Будьте первым!