Выписать фрагмент программы для решения
указанной ниже задачи и обосновать,
почему был выбран тот или иной вариант
оператора цикла:
вычислить факториал некоторого числа p;
факториал некоторого числа равен p,
найдите это число;
определить, является ли заданное
число степенью числа 3;
вычислить y = 1! + 2! + 3! +...+ n!
вычислить xn, где n - целое
положительное число;
вычислить значения x1, x2, x3,...,
xn.
В каких случаях используется
конструкция вложенных циклов?
Пример
Написать программу, которая находит и
выводит на печать все четырёхзначные a b c d,
числа a, b, c, d - различные цифры, для которых
выполняется: ab - cd = a + b + c + d.
Решение
Задачу можно решать несколькими
способами. Одним из возможных способов
является перебор всех четырёхзначных чисел
и проверка для каждого из них выполнения
условий. Попробуем сократить перебор, для
этого преобразуем второе условие:
10a + b -(10c + d) = a + b + c + d;
9(a - c) = 2(c + d);
a - c / c + d = 2 / 9
Проанализировав первое условие, получаем,
что a = c + 2, d = 9 - c и 0<=c<=7.
Program Example_17;
Var a,b,c,d : Integer; Begin
For c:=0 To 7 Do
Begin
a:=c+2; d:=9-c;
For b:=0 To 9 Do
If (b<>c) And (b<<a) And (b<>d) Then
Write(a,b,c,d,' ');
Writeln
End; End.
Таким образом, мы решили задачу,
значительно сократив перебор.
Пример:
Если мы сложим все цифры какого-либо числа,
затем все цифры найденной суммы и будем
повторять много раз, мы, наконец, получим
однозначное число (цифру), называемое
цифровым корнем данного числа. Например,
цифровой корень числа 34697 равен 2 (3 + 4 + 6 + 9 + 7 =
29; 2 + 9 = 11; 1 + 1 = 2). Составим программу для
нахождения цифрового корня натурального
числа.
Решение
Сколько переменных потребуется для
решения задачи, какого типа будут эти
переменные?
Всегда ли необходимо вычислять сумму
цифр числа (а если введенное число
является однозначным)?
Вычислим сумму цифр числа: для этого
будем выделять цифры числа и увеличивать
текущую сумму. Какую конструкцию
необходимо использовать для этого?
В результате выполнения цикла мы
получили число. Является ли оно
однозначным (корнем данного числа)? Какую
конструкцию необходимо использовать для
нахождения корня числа? Какую
конструкцию необходимо использовать для
нахождения корня числа? Какие действия
должна выполнять программа внутри этой
конструкции?
Программа, вычисляющая корень данного
числа, может выглядеть следующим образом:
Program Example_18;
Var n, k, s : Longint; Begin
Writeln('Введите число');
Readln(n);
s:=n;
While s>9 Do
Begin
k:=s; s:=0;
Repeat
s:=s+k Mod 10;
k:=k Div 10;
Until k=0;
End;
Writeln('цифровой корень числа ',n,' равен ',s); End.
Решение задач
Найти все трёхзначные числа,
удовлетворяющие каждому из условий:
любые две цифры различны;
число равно среднему арифметическому
всех трёхзначных чисел (включая данное),
имеющих тот же цифровой состав.
Стороны прямоугольника заданы
натуральными числами M и N.
Составить программу, которая будет
находить, на сколько квадратов, стороны
которых выражены натуральными числами,
можно разрезать данный прямоугольник,
если от него каждый раз отрезается
квадрат максимально большой площади.
Дано натуральное число n>=2. Составить
программу разложения этого числа на
простые множители:
простой множитель p должен быть
выведен k раз, где k -
натуральное число, такое, что n делится
на pk и не делится на pk+1;
каждый простой множитель должен быть
выведен ровно один раз.
Даны натуральные числа N и p.
Получить все натуральные числа, меньшие N
и взаимно простые с p.
Даны целые числа p и q. Получить
все делители числа q, взаимно простые
с p.
Сумма квадратов длин катетов a и b
прямоугольного треугольника равна
квадрату длины гипотенузы c: a2 +
b2 = c2. Тройка натуральных
чисел, удовлетворяющих этому равенству,
называется Пифагоровыми числами.
Составить программу нахождения основных
троек Пифагоровых чисел, используя
следующие формулы:
a = u*v; b = u2 - v2 / 2; c = u2 + v2
/ 2,
где u и v - взаимно простые
нечётные натуральные числа и u>v.
Найти наименьшее натуральное число N
представимое двумя различными способами
в виде суммы кубов двух натуральных чисел
x3и y3 (x>=y).
Даны натуральные числа m, n1, n2,...,nm
(m>=2). Вычислить НОД(n1, n2,...,nm),
воспользовавшись соотношением НОД(n1,
n2,...,nm) = НОД(НОД(n1, n2,...,
nm-1), nm) и алгоритмом Евклида.
Найти все простые несократимые дроби,
заключённые между 0 и 1, знаменатели
которых не привышают 7 (дробь задаётся
двумя натуральными числами - числителем и
знаменателем).