// PascalABC.NET 3.1, сборка 1250 от 28.05.2016const k=650; function GetData(f:file of integer):integer;// получить из файла очередное значениеbegin if not f.Eof then Read(f,Result) else Result:=0end;function NOD(a,b:integer):integer;// нахождение НОДbegin while b>0 do (a,b):=(b,a mod b); Result:=aend;function VZP(a,b:integer):boolean;// являются ли a и b взаимно простыми?begin Result:=NOD(a,b)=1;end;function Has1(n:integer):boolean:=(Pos('1',n.ToString)>0);begin var f:file of integer; // создаем файл Assign(f,'F.dat'); Rewrite(f); var n:integer; for var i:=1 to k do begin n:=(Random(1,2)=1?Random(135,4000):Random(4578,15000)); f.Write(n); end; f.Close; // файл создан, начинаем его читать и обрабатывать Reset(f); Writeln('Задание 1'); while not f.Eof do begin n:=GetData(f); Print(n); end; Writeln(NewLine,'Задание 2'); f.Seek(0); var a:=GetData(f); var b:=GetData(f); var c:integer; var VZPLeft:=VZP(a,b); var VZPRight:boolean; if VZPLeft then Print(a); for var i:=3 to k-1 do begin c:=GetData(f); VZPRight:=VZP(b,c); if VZPLeft and VZPRight then Print(b); (a,b):=(b,c); VZPleft:=VZPRight end; c:=GetData(f); if VZP(b,c) then Print(b,c); Writeln(NewLine,'Задание 3'); f.Seek(0); var mx:=0; while not f.Eof do begin a:=GetData(f); if Has1(a) then mx:=Max(mx,a) end; if mx>0 then Writeln(mx); f.Closeend.
Тестовое решение в прикрепленном файле