fonction puissance(val x:reel; val i: entier): reel;
var p:reel;
debut
si i=1 alors retourne x
sinon
p:=puissance(x,i/2);
si i%2=0 alors retourne p*p
sinon retourne p*p*x
finsi
finsi
fin
finfonction;
Réponse
fonction pgcd (val m,n : entier):entier;
debut
si m<n alors retourne(pgcd(n,m)); finsi
si n=0 alors retourne(m); finsi
retourne(pgcd(n, m % n));
fin
finfonction
procedure Appliquer(val i,sommemax:entier; ref T: tab);et Appliquer(n,K,T); fait ce qui est souhaité.
debut
si i=0 alors P(n,T);
sinon
T[i]=1;
tantque T[i]<=B[i] et T[i]+(i-1)<=sommemax faire
Appliquer(i-1, sommemax-T[i], T);
T[i]:=T[i]+1
fintantque
finsi
fin
finprocedure
procedure Appliquer(val n:entier; ref T: tab);
var i:entier;
var somme:entier;
debut
somme:=n;
pour i allant de 1 a n par pas de 1 faire T[i]:=1; finpour;
repeter
P(n,T);
i:=1;
tantque i<=n et (T[i]=B[i] ou somme=K) faire
somme:=somme-T[i]+1;T[i]:=1;i:=i+1
fintantque;
si i<=n alors T[i]:=T[i]+1;somme:=somme+1 finsi
jusqu'a i>n finrepeter
fin
finprocedure