Для операторов цикла существует две процедуры - break и continue. Процедура break выполняет досрочный выход из цикла. Процедура continue производит переход на следующую итерацию цикла.
В ТП версии 7.0 процедуры break и continue во многих случаях заменяют оператор goto, который в раннее часто использовали для тех же целей.
Задача 21.Определить, является ли число N простым (простым называется такое натуральное число, которое делится без остатка только на себя и на единицу)
Задачу можно решить, используя определение, то есть подсчитывая количество чисел, на которые делится N без остатка:
Var i,n,s:integer;
Begin
Readln;
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
Readln;
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
Readln;
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.<- Предыдущая страница | Следующая страница ->