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
| program PPCMS;
uses wincrt;
type mat = array [1..10,1..10]of integer;
var
m:mat;
n,i,j:integer;
Procedure saisie ( var n:integer;var m:mat);
var i:integer;
begin
repeat
write('saisir un entier entre 3 et 10 ');
readln(n);
until n in [3..10];
for i:=1 to n do
repeat
write ('M[1,',i,']=');
readln (m[1,i]);
until (m[1,i]>0);
end;
function ppcm (a,b:integer):longint;
var max,min:integer;
begin
if (a>b) then
begin
max:=a;
min:=b;
end
else
begin
max:=b;
min:=a;
end;
while (max mod min <> 0) do
max:=max +(a+b-min);
ppcm:=max;
end;
procedure remplir (n:integer;var m:mat);
var i,j:integer;
begin
for i:=2 to n do
for j:=1 to n-i+1 do
m[i,j]:=ppcm(m[i-1,j],m[i-1,j+1]);
end;
begin
saisie (n,m);
remplir (n,m);
for i:=1 to n do
for j:=1 to n-i+1 do
writeln ('m[',i,',',j,']=',m[i,j]);
writeln ('le ppcm des PPCMs =',m[n,1]);
end. |