Академический Документы
Профессиональный Документы
Культура Документы
Le grand avantage de ces algorithmes est qu'ils peuvent s'appliquer simplement des nombres stocks sous
forme de chanes de caractres. Partant de l, il est possible manipuler de trs grands nombres (de 255 chiffres
en TP).
x N multipli par x
chaque chiffre est multipli par 2 ( partir du chiffre des units et ajout au report ventuel).
Ex : 175 * 2 = ?
2 5*2=10 donne 0 comme chiffre le plus droite et un report de 1
7*2=14 augment du report de 1 fournit 15 et donc le chiffre 5 et un report de 1
1*2=2 augment du report fournit le chiffre 3
La rponse est : 350
* le chiffre le plus droite dans la rponse est 10 moins le chiffre le plus droite dans le nombre de
dpart doubl et augment de 5 s'il est impair;
* chaque chiffre intermdiaire vaut 9 diminu du chiffre correspondant dans le nombre de dpart
doubl puis augment de la moiti de son voisin de droite et augment de 5 si le chiffre est impair;
* le chiffre le plus gauche dans la rponse est la moiti du chiffre le plus gauche dans le nombre de
dpart diminu de 2.
3
Ex : 1275 * 3 = ?
(10-5)*2=10 augment de 5 puisque le dernier chiffre (5) est impair. On obtient donc 5 avec un report de 1
(9-7)*2+[5/2]=6 augment du report de 1 et de 5 car 7 est impair. On obtient donc 2 et un report de 1
(9-2)*2+[7/2]=17 plus le report de 1. On obtient donc 8 et un report de 1
(9-1)*2+[2/2]=17 augment du report de 1 et de 5 car 1 est impair. On obtient donc 3 et un report de 2
[1/2]-2=-2 plus le report de 2 fournit 0.
La rponse est : 03825
* le chiffre le plus droite dans la rponse est 10 moins le chiffre le plus droite dans le nombre de
dpart doubl et augment de 5 s'il est impair;
* chaque chiffre intermdiaire vaut 9 diminu du chiffre correspondant dans le nombre de dpart
augment de la moiti de son voisin de droite et augment de 5 si le chiffre est impair;
* le chiffre le plus gauche dans la rponse est la moiti du chiffre le plus gauche dans le nombre de
dpart diminu de 1.
4
Ex : 1275 * 4 = ?
(10-5)=5 augment de 5 puisque le dernier chiffre (5) est impair. On obtient donc 0 avec un report de 1
(9-7)+[5/2]=4 augment du report de 1 et de 5 car 7 est impair. On obtient donc 0 et un report de 1
(9-2)+[7/2]=10 plus le report de 1. On obtient donc 1 et un report de 1
(9-1)+[2/2]=9 augment du report de 1 et de 5 car 1 est impair. On obtient donc 5 et un report de 1
[1/2]-1=-1 plus le report de 1 fournit 0.
La rponse est : 05100
* le chiffre le plus droite dans la rponse est le chiffre le plus droite dans le nombre de dpart
doubl et augment de 5 s'il est impair.
* chaque chiffre intermdiaire vaut le double du chiffre correspondant dans le nombre de dpart
augment de la moiti de son voisin de droite et augment de 5 si le chiffre est impair.
* le chiffre le plus gauche dans la rponse est la moiti du chiffre le plus gauche dans le nombre de
dpart.
7
Ex : 1275 * 7 = ?
5*2=10 augment de 5 puisque le dernier chiffre (5) est impair. On obtient donc 5 avec un report de 1
7*2+[5/2]=16 augment du report de 1 et de 5 car 7 est impair. On obtient donc 2 et un report de 2
2*2+[7/2]=7 plus le report de 2. On obtient donc 9
1*2+[2/2]=3 augment de 5 car 1 est impair. On obtient donc 8
[1/2]=0 fournit 0.
La rponse est : 08925
* le chiffre le plus droite dans la rponse est 10 moins le chiffre le plus droite dans le nombre de
dpart doubl;
* chaque chiffre intermdiaire vaut 9 diminu du chiffre correspondant dans le nombre de dpart
doubl puis augment de son voisin de droite;
* le chiffre le plus gauche dans la rponse est le chiffre le plus gauche dans le nombre de dpart
diminu de 2.
8
Ex : 1275 * 8 = ?
(10-5)*2=10 On obtient donc 0 avec un report de 1
(9-7)*2+5=9 augment du report de 1. On obtient donc 0 et un report de 1
(9-2)*2+7=21 augment du report. On obtient donc 2 et un report de 2
(9-1)*2+2=18 augment du report. On obtient donc 0 et un report de 2
1-2=-1 plus le report de 2 fournit 1.
La rponse est : 10200
9 * le chiffre le plus droite dans la rponse est 10 moins le chiffre le plus droite dans le nombre de
dpart;
* Chaque chiffre intermdiaire vaut 9 diminu du chiffre correspondant dans le nombre de dpart
augment de son voisin de droite;
* le chiffre le plus gauche dans la rponse est le chiffre le plus gauche dans le nombre de dpart
diminu de 1.
Ex : 1275 * 9 = ?
10-5=5 On obtient donc 5
(9-7)+5=7 On obtient donc 7
(9-2)+7=14 On obtient donc 4 et un report de 1
(9-1)+2=10 augment du report de 1. On obtient donc 1 et un report de 1
1-1=0 plus le report de 1 fournit 1.
La rponse est : 11475
* le chiffre le plus droite dans la rponse est le chiffre le plus droite dans le nombre de dpart;
* chaque chiffre intermdiaire vaut le chiffre correspondant dans le nombre de dpart augment de son
11
voisin de droite
* le chiffre le plus gauche dans la rponse est le chiffre le plus gauche dans le nombre de dpart.
Le programme Pascal ci-dessous pourrait tre amlior en terme de nombre de lignes. Je ne l'ai pas
optimis, voulant rester proche de l'algorithme pour gagner en lisibilit. Il contient aussi des
fonctions pour ajouter, soustraire et multiplier n'importe quels nombres entiers stocks sous forme
de chanes de caractres.
PROGRAM Trachtenberg;
USES CRT;
VAR S,S1,S2:STRING;
BEGIN
CLRSCR;
WRITE('Nbre=');READLN(S);
WRITELN(S,' * 2 = ',Mul2(S));
WRITELN(S,' * 3 = ',Mul3(S));
WRITELN(S,' * 4 = ',Mul4(S));
WRITELN(S,' * 5 = ',Mul5(S));
WRITELN(S,' * 6 = ',Mul6(S));
WRITELN(S,' * 7 = ',Mul7(S));
WRITELN(S,' * 8 = ',Mul8(S));
WRITELN(S,' * 9 = ',Mul9(S));
WRITELN(Mul2(S)+' + '+Mul8(S)+' = ',Add(Mul2(S),Mul8(S)));
S1:='1234';S2:='903';
WRITELN(S1+' * '+S2+' = ',Mult(S1,S2));
WRITELN(Mul7(S)+' - '+Mul2(S)+' = ',Soust(Mul7(S),Mul2(S)));
END.
Page prcdente.
Page d'accueil.