Voici l`algorithme : Fonction : rac(n) à Renvoie la partie entière de la

publicité
Voici l’algorithme :
Fonction : rac(n)  Renvoie la partie entière de la racine carrée de n
Variables (entières) : n (le nombre entier à décomposer), Tab[4]={0,0,0,0} (Nos 4 q, a mettre au
carré), temp,k, V=0 // Cette dernière variable nous permet de faire certaines vérifications,
Demander n ;
Si rac(n)²=n, ne pas faire les tests , et Tab={rac(n),0,0,0}
Sinon : Algorithme
-
-
-
Tab[0]=rac(n) ;
Repère 0
temp=n-tab[0]² ;
Si temp==3 //Ces 2 vérifications (3 et 9), proviennent de simplifications que nous avons
trouvé lors de nos recherches.
o Tab[]={Tab[0],1,1,1} ;
Et on arrête l’algo.
Si temp==9
o Tab[]={Tab[0],3,3,3} ;
V=1
Et on arrête l’algorithme.
Sinon si temp ==4,2,1 ou 0
o Temp=temp+Tab[0]²
Tab[0]=Tab[0]-1 ;
On reprend au reprend au repère 0.
Tab[1]=rac(temp)
Repère 1
Temp=temp-Tab[1]²
Si temp==2
o Tab[]={Tab[0],Tab[1],1,1}
Et on arrête l’algo.
Si temp==6
o Tab[]={Tab[0],Tab[1],3,3} ;
V=2 ;
Et on arrête l’algo.
Sinon si temp==3,1 ou 0
o Temp=temp+tab[1]²
Tab[1]=Tab[1]-1 ;
Et on reprend l’algo au repère 1.
Tab[2]=rac(temp)
Repère 2
Temp=temp-tab[2]²
Si temp==1
o Tab[]={Tab[0],ta[1],Tab[2],1}
Et on arrête l’algo.
Sinon si temp==3
o Tab[]={Tab[0],tab[1],Tab[2],3}
V=3,
Et on arrête l’algo.
Sinon si temp=rac(temp)²
o Tab={Tab[0], Tab[1],Tab[2], rac(temp)}
Et on arrête l’algo.
Sinon si temp est égal a 3 * k², et k entier naturel, c’est-à-dire temp=3k² //C’est là que ça
devient compliqué…
o Tab={Tab[0], Tab[1],Tab[2], k}
V=4;
Et on arrête l’algo.
Sinon si Tab[2] != 0 // « != » signifie différent.
o Temp=Temp+Tab[2]²
Tab[2]=Tab[2]-1
Et on reprend au repère 2.
// Et c’est vraiment ici que je ne sais pas comment faire… Je programme en C, c’est
peut-être pour ça ?
Si tab[2]==0, on reprend l’algorithme au repère 1. Temp reprend sa valeur « initiale » à
ce repère, c’est-à-dire temp=n-tab[0]² .
Tab[1] prend la valeur Tab[1]-1. Et on refait tourner l’algo, jusqu’en bas.
Si, au fur et à mesure des opérations, Tab[1] finit par atteindre la valeur 0 aussi…
Temp = n
On reprend l’algo avec Tab[0]-1 au repère 0.
Et si Tab[0] atteint 0, on affiche un joli message d’erreur, « Ne fonctionne pas pour
N=n », et on fait une pause dans le programme.
Fin de l’algorithme.
Vérification de la valeur de n :
Soit i=0, temp2=0
Si v !=4 :
Tant que i<v,
Temp2=temp2+tab[i]²
i=i+1
Fin Tant que
Tant que i < 4
Temp2=Temp2+tab[i]
i=i+1
Fin Tant que.
Fin si.
Si v=4
Temp2=Tab[0]²+Tab[1]²+Tab[2]²+3*Tab[3]²
Fin si.
Afficher “C’est bon”, si n=temp2.
Afficher « erreur », si n !=temp2, et faire une pause dans le programme.
Téléchargement