on se propose de réaliser un programme qui cherche les entiers de l'intervalle [m,n] admettant le plus de diviseurs.avec 5<=m<n<=100
Il faut ensuite afficher ces entiers avec le nombre de leurs diviseurs
J'ai biensur essayé mais il me reste un petit probleme,c'est que le programme m'affiche tout les entiers de cet intervalles et non pas ceux que je veux seulement.
voila mon travail:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
édité:
voila j'ai corrigé.En fait d'aprés moi,c'est la procedure affichage qui fait défaut...