Задан массив целых положительных чисел x(n). все простые числа длиной не более пяти цифр переписать в массив y. удалить из массива два наибольших и три наименьших числа.
// PascalABC.NET 3.2, сборка 1485 от 15.06.2017 // Внимание! Если программа не работает, обновите версию!
function IsPrime(Self:integer):boolean; extensionmethod; begin var n:=Self; if n<4 then Result:=True else begin var found:=(n mod 2=0); var p:=3; while (not found) and (sqr(p)<=n) do begin found:=(n mod p=0); p+=2 end; Result:=not found end end;
function Digits(Self:integer):integer; extensionmethod; begin Result:=Self.ToString.Length end;
begin var x:=ReadSeqIntegerWhile('Окончание ввода 0'+NewLine,p->p<>0).ToArray; var y:=x.Where(y->(y.Digits<=5) and y.IsPrime).ToArray; var s:=y.Select((p,i)->(p,i)).OrderBy(p->p[0]); var h:=(s.Take(3)+s.TakeLast(2)).Select(p->p[0]).ToHashSet; y:=y.Where(p->not (p in h)).ToArray; Writeln('- '*25); y.Println end.