function puissance(a,b:integer):longint;
var p:longint;
i:integer;
begin p:=1;
for i:=1 to b do p:=p*a;
puissance:=p;
end;
function factoriel(a:integer) :longint;
var f:longint;
i:integer;
begin f:=1;
for i:=2 to a do f:=f*i;
factoriel:=f;
end;
function
maximum(t:tab;n:integer):integer;
var
max,i:integer;
begin max:=t[1];
for i:=2 to n do if t[i]>max then max:=t[i];
maximum:=max;
end;
function
minimum(t:tab;n:integer):integer;
var min,i:integer;
begin min:=t[1];
for i:=2 to n do if t[i]<min then min:=t[i];
minimum:=min;
end;
function
majus_espace(ch:string):boolean;
var
i:integer; test:boolean;
begin i:=0;
repeat i:=i+1;
if ch[i] in ['A'..'Z',' '] then test:=true else test:=false;
until (test=false) or (i=length(ch));
majus_espace:=test;
end;
function
exist(t:tab;n,x:integer):boolean;
var i:integer; test:boolean;
begin i:=0;
repeat i:=i+1;
if t[i] =x then test:=true else test:=false;
until (test=true) or (i=n);
exist:=test;
end;
function
palindrome(ch:string):boolean;
var i:integer; test:boolean;
begin i:=0;
repeat i:=i+1;
if ch[i] = ch[length(ch)-i+1] then test:=true else test:=false;
until (test=false) or( i=length(ch) div 2);
palindrome:=test;
end;
function
distinct(t:tab;k:integer):boolean;
var i:integer; test:boolean;
begin i:=0;
repeat i:=i+1;
if t[i]=t[k] then test:=false else test:= true;
until (test=false) or (i=k-1);
distinct:=test;
end;
procedure saisie_distinct(var t:tab;var n:integer);
var i:integer;
begin
write('t[1]='); readln(t[1]);
for i:=2 to n do repeat
write('t[',i,']='); readln(t[i]);
until distinct(t,i)=true;
end;
procedure saisie_tableau_trie(var t:tab;var n:integer);
var i:integer;
begin
write('t[1]='); readln(t[1]);
for i:=2 to n do repeat write('t[',i,']=');
readln(t[i]);
until t[i]>t[i-1];
end;
function occurence(t:tab; n,x:integer) :integer;
var
i,occ :integer;
begin occ:=0;
for i:=1 to n do
if t[i]=x then occ:=occ+1;
occurence:=occ;
end;
function premier(n:integer):boolean;
var i:integer;
begin i:=2;
while (n mod i <>0) and (i<=n div 2) do i:=i+1;
if i > n div 2 then
premier:=true else premier:=false;
end;
function premier(n:integer):boolean;
var i:integer;
begin
premier :=true ; for i :=2 to n-1 do if n mod i =0 then premier:=false ; end;
function recherchedichotomique (t:tab;x:integer):boolean;
var
d,g,i:integer;
begin g:=1;
d:=n;
repeat i:=(d+g) div 2;
if x<t[i] then d:=i-1 else g:=i+1;
until (x=t[i]) or (g>d);
if x=t[i] then recherchedichotomique:=true else recherchedichotomique:=false;
end;
function pgcd(a,b:integer):integer;
begin
while a <> b do
if a > b then a := a - b else b := b - a;
pgcd := a;
end;
Function Pgcd( a , b : integer) : integer;
Var r : integer;
Begin
While b <> 0 Do Begin
r := a mod b;
a := b;
b := r;
End;
Pgcd := a ; end;
procedure fact_premiers(var t1:tab;
var k:integer;a:integer);
var i:integer;
begin k:=0;
i:=2;
while a<>1 do if a mod i =0 then begin
a:= a div i;
k:=k+1;
t1[k]:=i;
end else i:=i+1;
end;
function ppcm(a,b:integer):integer;
var Max,Min:integer;
begin
Max := a; Min := b;
If b > Max Then Begin
Max := b;
Min := a;
End;
While Max Mod Min <> 0 Do Max := Max + (a + b - Min);
ppcm := Max;
end;
function
chaine_sans_redandance(ch:string):stri ng;
var i,j:integer;
chf :string ; begin chf :=’’ ;
for i:=1 to length(ch)-1 do if pos(ch[i]=chf)=0 then chf :=chf+ch[i] ;
chaine_sans_redandance:=chf;
end;