| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 
 | program entier;
uses wincrt;
type tab=array [1..100] of integer;
var m,n:integer;
    t:tab;
    ch1:string;
 
procedure saisie(var m1,n1:integer);
begin
 repeat
  write('donner m: ');
  readln(m1);
  write('donner n: ');
  readln(n1);
 until (m1>=5) and (m1<n1) and (n1<=100);
end;
 
procedure diviseur(m1,n1:integer;var t1:tab);
var a,l,i,j,p:integer;
 
begin
 
for l:=1 to m1-1 do
begin
t1[l]:=0;
end;
 for i:=m1 to n1 do
   begin
   p:=0;
   for j:=1 to i do
    begin
    if (i mod j)=0 then
       p:=p+1;
    end;
   t1[i]:=p;
   end;
for a:=m1 to n1 do
writeln('les nombres de diviseurs de ',a,' sont: ',t1[a]);
end;
 
procedure affichage(m1,n1:integer;t1:tab;var ch:string);
var k:integer;
    ch2:string;
begin
ch:='les entiers ayant le plus grand nombre de diviseurs sont: ';
 for k:=m1 to n1 do
  begin
   if t1[k]<t1[k+1] then
   begin
    str((k+1),ch2);
    ch:=ch+ch2+',';
   end;
  end;
end;
 
begin
saisie(m,n);
diviseur(m,n,t);
affichage(m,n,t,ch1);
writeln(ch1);
end. | 
Partager