suivant: Les nombres heureux
monter: Les parallélépipèdes rectangles presque
précédent: L'énoncé
Table des matières
Index
Si 3 entiers (a, b, c) vérifiant a < b < c représentent un
parallélépipède rectangle, pour su'il soit presque parfait il faut que :
-
soit un entier,
-
soit un entier,
-
soit un entier
Comment tester qu'un nombre p est un carré parfait ?
On peut écrire :
frac(sqrt(p))==0 ou
floor(sqrt(p))^
2-p==0
mais cela demande un calcul ! Il est donc préferable d'utiliser la commande
type qui renvoie le type de l'argument. Par exemple :
type(sqrt(4))==integer renvoie 1 et type(sqrt(5))==integer
renvoie 0.
On tape :
parapparfait(n):={
local a,b,c,L;
L:=NULL;
pour a de 1 jusque n faire
pour b de a+1 jusque n faire
si type(sqrt(a^2+b^2))==integer alors
pour c de b+1 jusque n faire
si type(sqrt(a^2+c^2))==integer alors
si type(sqrt(c^2+b^2))==integer alors
L:=L,[a,b,c];
fsi;
fsi;
fpour;
fsi;
fpour;
fpour;
retourne L;
}:;
0n tape : L:=parapparfait(1000)
On obtient (c'est long !):
[44,117,240],[85,132,720],[88,234,480],[132,351,720],
[140,480,693],[160,231,792],[176,468,960],[240,252,275],
[480,504,550],[720,756,825]
On peut modifier le programme pour avoir pour chaque a, une liste provisoire
P qui sera la liste
a, b1, b2...bp telle que a2 + bj2 soit un
carré. Puis dans cette liste on cherchera les bj et les bk tels que
bj2 + bk2 soit un carré. Le triplet
[a, bj, bk] répond alors à la
quesstion.
On tape :
paralparfait(n):={
local a,b,c,L,P,j,s,k,b2;
L:=NULL;
pour a de 1 jusque n faire
P:=a;
pour b de a+1 jusque n faire
si type(sqrt(a^2+b^2))==integer alors
P:=P,b;
fsi;
fpour;
s:=size(P)-1;
pour j de 1 jusque s-1 faire
b:=P[j];
b2:=b^2;
pour k de j+1 jusque s faire
c:=P[k];
si type(sqrt(b2+c^2))==integer alors
L:=L,[a,b,c];
fsi;
fpour;
fpour;
fpour;
retourne L;
}:;
0n tape : L:=paralparfait(1000)
On obtient (c'est 2 fois moins long !):
[44,117,240],[85,132,720],[88,234,480],[132,351,720],
[140,480,693],[160,231,792],[176,468,960],[240,252,275],
[480,504,550],[720,756,825]
Remarque
On peut facilement avoir les couples a, b tel que a2 + b2 soit un carré.
On tape :
sommecarre(n):={
local a,b,L,P;
L:=NULL;
pour a de 1 jusque n faire
P:=a;
pour b de a+1 jusque n faire
si type(sqrt(a^2+b^2))==integer alors
P:=P,b;
fsi;
fpour;
si size(P)>1 alors L:=L,[P];fsi;
fpour;
retourne L;
}:;
On tape : sommecarre(100)
On obtient :
[3,4],[5,12],[6,8],[7,24],[8,15],[9,12,40],[10,24],
[11,60],[12,16,35],[13,84],[14,48],[15,20,36],
[16,30,63],[18,24,80],[20,21,48,99],[21,28,72],
[24,32,45,70],[25,60],[27,36],[28,45,96],[30,40,72],
[32,60],[33,44,56],[35,84],[36,48,77],[39,52,80],
[40,42,75,96],[42,56],[45,60],[48,55,64,90],[51,68],
[54,72],[56,90],[57,76],[60,63,80,91],[63,84],[65,72],
[66,88],[69,92],[72,96],[75,100],[80,84]
Par exemple, on voit que :
202 +152 est un carré : c'est 252,
202 +212 est un carré : c'est 292,
202 +482 est un carré : c'est 522,
202 +992 est un carré : c'est 1012.
ou encore
602 +112 est un carré : c'est 612,
602 +252 est un carré : c'est 652,
602 +322 est un carré : c'est 682,
602 +452 est un carré : c'est 752,
602 +632 est un carré : c'est 872,
602 +802 est un carré : c'est 1002.
602 +912 est un carré : c'est 1092.
On peut aussi en déduire que :
602 +1442 est un carré : c'est 1562 (car
152 +362 = 392).
602 +1752 est un carré : c'est 1852 (car
122 +352 = 372).
602 +2972 est un carré : c'est 3032.(car
202 +992 = 1012).
Mais si on veut tous les nombres b
300 tels que n2 + b2 soit un
carré il est préférable d'écrire le programme :
n2plusb2(n,N):= {
local b,P;
P:=n;
pour b de 1 jusque N faire
si type(sqrt(n^2+b^2))==integer alors
P:=P,b;
fsi;
fpour ;
P;
}:;
On tape : n2plusb2(20,1000)
On obtient :
20,15,21,48,99
On tape : n2plusb2(60,300)
On obtient :
60,11,25,32,45,63,80,91,144,175,221,297
seul
602 +2212 = 2292 n'avait pas été trouvé précédemment car 229
est un nombre premier !
On tape : n2plusb2(60,1000)
On obtient :
60,11,25,32,45,63,80,91,144,175,221,297,448,899
suivant: Les nombres heureux
monter: Les parallélépipèdes rectangles presque
précédent: L'énoncé
Table des matières
Index
Documentation de giac écrite par Renée De Graeve