Категория B14 • задача №3

 
 
 

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

Дано:
дан следующий программный код (для удобства, код программы приведен на самом популярном языке программирования высокого уровня – Pascal)

function f(pn : integer) : boolean;
var
    i : integer;
begin
    f := true;
    for i := 2 to pn div 2 do
        if(pn mod i = 0) then
            f := false;
end;
var
    n : integer;
    k : integer;
begin
    k := 0;
    for n := 2 to 20 do
        if(f(n) = true) then
            k := k + 1;
    writeln(k);
end.

 

Найти:
определите, что будет напечатано в результате выполнения приведенного алгоритма

 

Решение

I этап: детальный анализ каждой строки заданной программы

Проанализируем код заданной функции:

Код программы (функция)Комментарии
function f(pn : integer) : boolean;

f - название функции. Данная функция принимает в качестве
параметра целочисленное значение и возвращает логическое
значение, то есть либо истину, либо ложь

varраздел декларации переменных
    i : integer;переменная-счетчик, используемая в цикле for
beginначало тела функции
    f := true;по умолчанию присваиваем функции значение равное false,
то есть функция вернет ложь, если ни один оператор
в теле функции не будет выполнен
    for i := 2 to pn div 2 dodiv - операция нахождения целой части при делении;
перебираем натуральные числа от двух до половины
значения, являющегося параметром функции
        if(pn mod i = 0) thenесли проверяемое число делится на значение
переменной-счетчика без остатка, то
            f := false;функция в качестве ответа вернет ложь
end;конец тела функции

Промежуточный вывод: данный алгоритм проверяет, является ли переданное число простым (напомню, что число является простым, если делится без остатка только на единицу и на само себя) и возвращает истину, если число простое. Если число делится на какое-либо другое число (данная проверка заключена в строке кода if (pn mod i = 0) then), то число не является простым, и тогда функция вернет значение false, то есть ложь. Также, важно понимать, что достаточно проверить делители, начиная с двойки и заканчивая половиной проверяемого числа. Например, нет необходимости проверять все числа от двух до самого это числа, так как, начиная с "экватора" в результате не может получиться целое число.

 

Проанализируем код главного блока программы:

Код программы (главный блок)Комментарии
varраздел описания переменных
    n : integer;переменная-счетчик, отвечающая за перебор натуральных
чисел в диапазоне от двух до двадцати
    k : integer;отвечает за количество простых чисел
из диапазона от двух до двадцати
beginначало главного блока программы
    k := 0;поскольку расчет еще не начался, то необходимо
обнулить переменную, отвечающую за количество
    for n := 2 to 20 doпоследовательно перебираем все натуральные числа
из диапазона от двух до двадцати включительно
        if(f(n) = true) thenесли текущее натуральное число является простым, то
            k := k + 1;увеличиваем счетчик простых чисел на единицу
    writeln(k);выпечатываем на экран количество простых чисел
end.конец главного блока программы

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

 

II этап: тестирование программы на реальных точечных данных

Итак, нашей целью является детерминировать количество простых чисел из диапазона от двух до двадцати включительно.

 2 - простое число, так как делится без остатка только на единицу и на само себя;
 3 - простое число, так как делится без остатка только на единицу и на само себя;
 4 - непростое число, так как делится на два без остатка;
 5 - простое число, так как делится без остатка только на единицу и на само себя;
 6 - непростое число, так как делится на два и на три без остатка;
 7 - простое число, так как делится без остатка только на единицу и на само себя;
 8 - непростое число, как минимум делится еще на два без остатка;
 9 - непростое число, так как делится на три без остатка;
10 - непростое число, как минимум делится на 5 без остатка;
11 - простое число, так как делится без остатка только на единицу и на само себя;
12 - непростое число, как минимум делится на 6 без остатка;
13 - простое число, так как делится без остатка только на единицу и на само себя;
14 - непростое число, как минимум делится на семь без остатка;
15 - непростое число, как минимум делится на три без остатка;
16 - непростое число, как минимум делится на восемь без остатка;
17 - простое число, так как делится без остатка только на единицу и на само себя;
18 - непростое число, как минимум делится на девять без остатка;
19 - простое число, так как делится без остатка только на единицу и на само себя;
20 - непростое число, как минимум делится на десять без остатка.

Все простые числа я пометил полужирным синим цветом, очевидно, что их количество составляет восемь штук.

 

Вывод:

после выполнения предложенного фрагмента программы на экран будет выведено число восемь

Резюме

  1. проанализировали код предложенной функции;

  2. проанализировали код предложенного главного фрагмента;

  3. "прогнали" программу по всем заданным значениям и посчитали количество простых чисел и заданного диапазона.

 

Ответ:

8

 
Рейтинг:
 
Проголосовало: 0
Количество просмотров: 1595
 
 
 

Категория B14 • задача №3

 

Комментарии

Для комментирования или зарегистрируйтесь
 

Остальные решения из билета №3 для подготовки к ЕГЭ по информатике 2013

 
Условие задачи
(наведите курсор мыши на ссылку)
Аудиовизуальное
решение
Мультимедийная
видеопрезентация
Решение в формате
слайд-шоу
Текстовое
решение
 
© 2011-2024 ООО "СтадиМен". Все права сохранены.
Перепечатка и использование материалов с данного сайта, разрешена только по согласию с владельцем.
Владелец оставляет за собой право воспользоваться 146 статьей УК РФ при нарушении авторских и смежных прав.
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?