Function IsPrime(n: Longint): Boolean; var i, sqrtn, delta: Word; begin if (n >= 5) and ((n - 1) mod 6 = 0) or ((n + 1) mod 6 = 0) then begin i := 5; delta := 2; sqrtn := Trunc(sqrt(n)); IsPrime := False; while i <= sqrtn do begin if n mod i = 0 then Exit; Inc(i, delta); delta := delta xor 6; {смена шага, то 2, то 4} end; IsPrime := True; end else IsPrime := (n = 2) or (n = 3); end; Var A,B,i : Integer; Begin Readln(A,B); For i:=A to B do If IsPrime(i) then Writeln(i); end.
m:=0. "количество отрицателных" p:=0 "количество положительных" i:=1. пока i<>0 повторять i:=прочитать число, введенное с клавиатуры. если i>0 то p:=p+1. если i<0 то m:=m+1. конец цикла пока. вывести на экран('процент положительных = ', p/(p+m)). вывести на экран('процент отрицательных = ', m/(p+m)).
Алгоритм будет верно работать, если введено хотя бы одно число, отличное от нуля. В противном случае возникнет ошибка деления на ноль. В нормальных программах подобные случаи отлавливаются и корректно обрабатываются.
var i, sqrtn, delta: Word;
begin
if (n >= 5) and ((n - 1) mod 6 = 0) or ((n + 1) mod 6 = 0) then begin
i := 5;
delta := 2;
sqrtn := Trunc(sqrt(n));
IsPrime := False;
while i <= sqrtn do begin
if n mod i = 0 then Exit;
Inc(i, delta);
delta := delta xor 6; {смена шага, то 2, то 4}
end;
IsPrime := True;
end else
IsPrime := (n = 2) or (n = 3);
end;
Var A,B,i : Integer;
Begin
Readln(A,B);
For i:=A to B do If IsPrime(i) then Writeln(i);
end.
m:=0. "количество отрицателных"
p:=0 "количество положительных"
i:=1.
пока i<>0 повторять
i:=прочитать число, введенное с клавиатуры.
если i>0 то p:=p+1.
если i<0 то m:=m+1.
конец цикла пока.
вывести на экран('процент положительных = ', p/(p+m)).
вывести на экран('процент отрицательных = ', m/(p+m)).
Алгоритм будет верно работать, если введено хотя бы одно число, отличное от нуля. В противном случае возникнет ошибка деления на ноль. В нормальных программах подобные случаи отлавливаются и корректно обрабатываются.