Задан массив целых положительных чисел 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.
// Внимание! Если программа не работает, обновите версию!
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.
Пример
Окончание ввода 0
3191 10853 769 683 81 52 653 85781 1 7937 67 316109 767071 98227 7811 283 84 593 976307 815292 31 53 96269 50881 5760 2 9371 7963 50539 2887 370 9973 918 23 2153 2637 183301 11 93563 21499 67967 694 817 990805 86287 805517 55837 307 87251 111919 37 719 4988 89 46727 575581 54042 97847 177 4817 16357 509 89057 4 8219 17623 35 937 3 5 81916 23633 2728 1069 991 122599 61 383 789088 80 614254 1266 72221 143337 195733 491 1831 12781 551093 494563 9316 9721 1483 2815 409 837812 17 41 419 9 13 32533 50329 408 43 768127 317491 631 90702 74005 310087 77893 16356 43451 36017 7 6706 755863 411 551875 595024 681 384049 85933 841968 83 7879 688697 23459 107 47194 257 38 0
- - - - - - - - - - - - - - - - - - - - - - - - -
3191 10853 769 683 653 85781 7937 67 283 593 31 53 96269 9371 7963 50539 2887 9973 23 2153 11 93563 21499 67967 86287 55837 307 87251 37 719 89 46727 4817 509 89057 8219 17623 937 5 23633 1069 991 61 383 72221 491 1831 12781 9721 1483 409 17 41 419 13 32533 50329 43 631 77893 43451 36017 7 85933 83 7879 23459 107 257