pascalabc.net
function isprime(n: integer): boolean; // простое?
begin
if n < = 1 then
begin
result : = false;
exit
end;
result : = true;
var (j, r) : = (2, round(sqrt(;
while result and (j < = r) do
if n mod j = 0 then
begin
result : = false;
exit
end
else
j += 1;
end;
function ishyperprime(n: integer): boolean; // гиперпростое?
begin
result : = false;
var k : = 10;
while n > 10 do
begin
n : = n div 10;
if not isprime(n) then exit
end;
result : = true
end;
begin
var (a, b) : = readinteger2;
var found : = false;
foreach var n in range(a, b) do
if isprime(n) then // найдено простоe число
if ishyperprime(n) then
begin
found : = true;
n.print
end;
if not found then
write(0)
end.
Объяснение:
Алгоритмы как логико-математические средства отражают различные компоненты человеческой деятельности и тенденции, а сами алгоритмы в зависимости от цели, начальных условий задачи, путей её решения, определения действий исполнителя классифицируются следующим образом [2]:
механические алгоритмы, называемые детерминированными, жёсткими (например, алгоритм работы двигателя), задают определённые действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый результат, если выполняются те условия процесса, для которых разработан алгоритм;
гибкие алгоритмы:
вероятностные (стохастические) алгоритмы дают программу решения задачи несколькими путями или приводящими к вероятному достижению результата;
эвристические алгоритмы – это алгоритмы, в которых достижение конечного результата программы действий однозначно не предопределено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя. К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и принятия решений, основанные на аналогиях, ассоциациях и опыте решения схожих задач;
линейные алгоритмы – наборы команд, выполняемых последовательно во времени друг за другом;
разветвляющиеся алгоритмы – алгоритмы, содержащие хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один из двух возможных шагов;
циклические алгоритмы – алгоритмы, предусматривающие многократное повторение одного и того же действия (или действий) над исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов;
вс алгоритмы (процедуры) – алгоритмы, ранее разработанные и целиком используемые при алгоритмизации конкретных задач.
Рассмотрим подробнее три основных вида алгоритмов: линейный, разветвляющийся и циклический.
Линейный алгоритм. Приведём пример записи алгоритма в виде блок-схемы, в виде программы на алгоритмическом языке и на языке Паскаль.
В качестве примера рассмотрим решение задачи вычисления среднего арифметического из двух чисел, вводимых с клавиатуры (рис. 1.2).

Разветвляющийся алгоритм. В качестве примера рассмотрим алгоритм нахождения максимального из двух чисел, введённых с клавиатуры (рис. 1.3).

Рис. 1.3. Пример разветвляющегося алгоритма
Циклический алгоритм. Работу циклического алгоритма рассмотрим на примере нахождения суммы чётных чисел, находящихся в диапазоне от 0 до n (n вводится с клавиатуры) (рис. 1.4).

Рис. 1.4. Пример циклического алгоритма
Поделитесь своими знаниями, ответьте на вопрос:
Написать программу, которая получает возраст человека от 0 до 120 лет и выводит со словом "год", "года", "лет".