Программа печатает в порядке уменьшения все целые числа в диапазоне 1÷4900, которые можно представить в виде n2+2k2, но нельзя представить в виде 7ij+j+3 (n,k,i,j>0).

 

program Prg;

 

uses crt;

type t=set of byte;

   ar=array[0..20]of t;

var p,q,v:byte;

   i,j,k,u,s,f:integer;

   a:ar;

begin

u:=4900;

v:=u div 255;

for i:=1 to v do

   a[i]:=[];

for i:=1 to u do begin

   j:=i; k:=i; p:=0; q:=0;

   while s<=u do

      begin

      s:=sqr(i)+2*sqr(j);

      q:=s div 255;

      p:=s mod 255;

      include(a[q],p);

      inc(j);

      end;

   while f<=u do

      begin

      f:=7*i*k+k+3;

      q:=f div 255;

      p:=f mod 255;

      a[q]:=a[q]-[p];

      inc(k);

      end;

   end;

clrscr;

for i:=u downto 1 do

   if i mod 255 in a[i div 255] then write(i,' ');

readkey;

end.

Результат работы программы

 

4609 4233 3873 3529 3201 2889 2593 2313 2049 1801 1569 1353 1153 969 801 649 513 393 289 201 129 73 33 9