Program S1;
Var
M,N : integer;
//**************************************
Procedure Saisie(Var N,M:integer);
Begin
Repeat
write('Bornes de l''intervalle (>=100) : ');
readln(N,M);
Until (N>=100) And (M>N);
End;
//**************************************
Function Som_Chiffres(N:integer) : integer;
Var
i,x,e,S : integer;
ch : String;
Begin
S := 0;
STR(N,ch);
For i:= 1 To Length(ch) Do
Begin
VAL(ch[i],x,e);
S := S+x;
End;
Som_Chiffres := S;
End;
//**************************************
Function Premier(N:integer) : Boolean;
Var
i : integer;
Pr : boolean;
Begin
i := 2;
Pr := True;
While (i<= N Div 2 ) And (Pr = True) Do
Begin
If (N Mod i = 0) Then
Pr := False
Else
i := i+1;
End;
Premier := Pr;
End;
//**************************************
Procedure Affichage(N,M:integer);
Var
i,S : integer;
Begin
For i:=N To M Do
Begin
If (i Mod Som_Chiffres(i) = 0) And (Premier(Pred(i))) Then
writeln(i);
End;
End;
//**************************************
Begin
Saisie(N,M);
Affichage(N,M);
End.
Inscription à :
Publier les commentaires (Atom)