uses wincrt;
type
tab=array[1..20] of integer;
var
n,m,i,j:integer;
tm,tn:tab;
procedure saisie(var n,m:integer);
begin repeat write('n=');
readln(n);
write('m=');
readln(m);
until (n>=10) and (m<=999);
end;
function sommediv(n:integer):integer;
var
i,s:integer;
begin s:=0;
for i:=1 to (n div 2) do if n mod i=0 then s:=s+i;
sommediv:=s;
end;
function occurence (tn,tm:tab):integer;
var
occ,k,l:integer;
begin occ:=0;
for k:=1 to i do for l:=1 to j do
if tn[k]=tm[l] then occ:=occ+1;
occurence:=occ;
end;
procedure suite(var tn,tm:tab;var i,j:integer);
var
s,s2,occ,k,l:integer;
begin i:=1;
tn[i]:=n;
repeat i:=i+1;
s:=sommediv(n);
tn[i]:=s;
n:=s;
until (s=1) or (tn[i]=tn[i-1]);
j:=1;
tm[j]:=m;
repeat j:=j+1;
s2:=sommediv(m);
tm[j]:=s2;
m:=s2;
until (s2=1) or (tm[j]=tm[j-1]);
if (s=1) and (s2=1) then begin
for k:=1 to i do write(tn[k],' ');
writeln;
for l:=1 to j do write(tm[l],' ');
write('occ= ',occurence(tn,tm));
end
else write(' une des suite n''est pas aliquote ');
end;
begin saisie(n,m);
suite(tn,tm,i,j);
end.