Для операторов цикла существует две процедуры - break и continue. Процедура break выполняет досрочный выход из цикла. Процедура continue производит переход на следующую итерацию цикла.

В ТП версии 7.0 процедуры break и continue во многих случаях заменяют оператор goto, который в раннее часто использовали для тех же целей.

Задача 21.Определить, является ли число N простым (простым называется такое натуральное число, которое делится без остатка только на себя и на единицу)

Задачу можно решить, используя определение, то есть подсчитывая количество чисел, на которые делится N без остатка:

Var i,n,s:integer;

Begin

Readlnno;

S:=0;

For i:=2 to n div 2 do begin

If n mod i=0 then s:=s+1;

End;

If s=0 then writeln('Число простое')

else writeln('Число составное');

end.

Однако, искомый результат можно получить значительно быстрее, если "перевернуть" определение и рассматривать его следующим образом: "Натуральное число называется составным, если оно делится без остатка на любое другое натуральное число, кроме себя и единицы".

Var i,n:integer;

Simply:boolean;

{ значение переменной Simply по завершении алгоритма равно TRUE, если введенной число является простым и FALSE в противном случае }

Begin

Readlnno;

Simply:=true;

For i:=2 to n div 2 do begin

If n mod i=0 then begin

Simply:=false; Break;

{определили, что число N - составное, досрочно выходим из цикла}

End;

End;

If simply then writeln('Число простое')

else writeln('Число составное');

end.

В общем случае время работы программы значительно уменьшается по сравнению с первым методом решения, так как для определения, является ли N составным, достаточно найти хотя бы одно натуральное число, на которое N делится без остатка.

Задача 22. Найти первые N простых чисел.

Расширяем решение предыдущей задачи.

Var i,n:integer;

Simply:boolean;

Num:integer; { проверяемое число }

Begin

Readlnno;

Num:=0;

repeat

Num:=Num+1; {начинаем проверку с увеличения Num.

При первом входе в цикл значение

Переменной Num станет равно единице}

Simply:=true;

For i:=2 to Num div 2 do begin

If Num mod i=0 then begin

Simply:=false; Break;

End;

End;

If not simply then continue; {если анализируемое число не является

простым, то переходим к следующему числу, на новую итерацию цикла (к строке
"Until n=0;")}

Writeln(Num); {число оказалось простым, напечатали его ...}

N:=N-1; { ... и уменьшили значение счетчика}

Until n=0;

Readln;

end.

<- Предыдущая страница | Следующая страница ->
Последнее изменение: Вторник 1 Март 2011, 16:09