uses wincrt;
var
n,m:integer;
procedure saisie(var n,m:integer);
begin repeat write('N= ');
readln(n);
write('m= ');
readln(m);
until (n >=100) and (m>n);
end;
function premier(n:integer):boolean;
var i:integer;
begin i:=2;
while (n mod i <>0) and (i<=n div 2) do i:=i+1;
if i > n div 2 then
premier:=true else premier:=false;
end;
function harshad(n:integer):boolean;
var ch:string;
i,x,e,s:integer;
begin str(n,ch);
s:=0;
for i:=1 to length(ch) do begin
val(ch[i],x,e);
s:=s+x;
end;
if n mod s =0 then harshad:=true else harshad:=false;
end;
procedure affiche(n,m:integer);
var i:integer;
begin
for i:= n to m do
if (harshad(i)) and (premier(i-1)) then writeln(i,' car ',n,' est Harshad et son prédécesseur ',i-1,' est un nombre premier');
end;
begin saisie(n,m);
affiche(n,m);
end.