На этой странице рассмотрим задачи while22 и while23 задачника Абрамяна: определение простоты числа и задача о нахождении наибольшего общего делителя соответственно. Ниже есть форма для проверки числа на простоту, для этого нужно ввести целое положительное число в жёлтое поле и нажать "проверить".
While22. Дано целое число N (> 1). Если оно является простым, то есть не имеет положительных делителей, кроме 1 и самого себя, то вывести true, иначе вывести false.
var
N, i, m: integer;
f: boolean; { Индикатор простоты числа:
True - протое, False - составное }
begin
write('N = ');
readln(N); { <-- вводим число для проверки на простоту }
if N = 1 then f := false { <-- число 1 НЕ считается простым }
else
if N = 2 then f := true { <-- число 2 - простое }
else
{ Если N + 1 нечетное, то есть N четное, то число N не может
быть простым (f = false): }
if odd(N + 1) then f := false
else begin { <-- далее проверяем нечетные числа }
i := 3; { <-- минимальное нечетное простое число }
f := true; { <-- по умолчанию число считаем простым }
{ Достаточно проверять все i, квадрат которых не больше N,
ибо в противном случае делители начнут повторяться. }
while (i * i <= N) and f do
{ Если i - ДЕЛИТЕЛЬ N, то число N составное и f = false.
В противном случае увеличиваем делитель i на 2: }
if N mod i = 0 then f := false
else i := i + 2
end;
writeln;
{ Выводим значение f. Если f в цикле не изменилась на, то мы
получим True, в противном случае - False: }
writeln(' ', f);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** boolean;
: Представляет логическое значение.**const** false = False;
: Представляет логическое значение.**const** true = True;
: Представляет логическое значение.**function** Odd(i: integer): boolean;
: Возвращает True, если i нечетно**const** false = False;
: Представляет логическое значение.**const** true = True;
: Представляет логическое значение.A **mod** B
- остаток при целочисленном делении А на В**const** false = False;
: Представляет логическое значение. While23. Даны целые положительные числа A и B. Найти их наибольший общий делитель (НОД), используя алгоритм Евклида:
НОД(A, B) = НОД(B, A mod B), если B ≠ 0; НОД(A, 0) = A,
где «mod» обозначает операцию взятия остатка от деления.
Решение этой задачи смотрите на странице наибольший общий делитель.