1 2 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