Numere Speciale
Numere Speciale
Numere Speciale
!
!
!
!
!
!
!
!
!
!
!
Capitolul
Numere perfecte
Numere prietene
Numere triangulare
Numere ptratice
Numere piramidale
Numere pitagoreice
Numere prime
Numere Fibonacci
Implementri sugerate
Probleme propuse
Soluiile problemelor
n antichitate numerele erau apreciate, n primul rnd, pentru calitile lor i, abia dup
aceea, pentru cantitatea pe care o reprezint. Astfel, fiecare numr a fost privit ca o individualitate distinct. Rudolf Steiner ne explic teoria conform creia un numr se
poate obine din ntreg printr-un proces de mprire (diviziune) asemntor proceselor
naturale de diviziune celular. Cellalt procedeu de obinere a unui numr ar fi prin
adunare. Cele dou procedee se pot prezenta comparativ astfel:
Operaie de mprire
Operaie de adunare
4. Numere speciale
85
Exist multe motive pentru care cercul reprezint o imagine mai adecvat unui numr care se divizeaz n pri. n acest caz, numrul 6 s-ar putea reprezenta astfel:
1
2
1
2
1
Dac l privim aa, cinci poate fi numit primul numr, numr prim cum l numim noi. Aceeai denumire le este apoi atribuit i celorlalte numere care nu au ali divizori dect pe 1 i pe ei nii.
Analiznd numrul 6, observm c adunnd divizorii si (numerele 1, 2 i 3) ajungem din nou la numrul 6 (1 + 2 + 3 = 6).
2n 1
22 1 = 3
23 1 = 7
24 1 = 15
25 1 = 31
Primalitate
prim
prim
nu
prim
6
7
26 1 = 63
27 1 = 127
nu
prim
2n 1 (2n 1)
21 3 = 2 3 = 6
22 7 = 4 7 = 28
Suma divizorilor
1+2+3=6
1 + 2 + 4 + 7 + 14 = 28
24 31 = 16 31 = 496
1 + 2 + 4 + 8 + 16 + 31 +
+ 62 + 124 + 248 = 496
26 127 = 16 31 =
8128
1 + 2 + 4 + 8 + 16 + 32 +
+ 64 + 127 + 254 + 508 +
1016 + 2032 + 4064 = 8128
86
4. Numere speciale
Alte proprieti ale numerelor perfecte :
1) Toate numerele perfecte se termin cu cifra 6 sau cu cifra 8, dup cum se poate observa din tabelul urmtor:
n 2n 1 2n 1 2n 1(2n 1)
2
2
3
6
3
4
7
28
4
8
15
120
5
16
31
496
6
32
63
2016
7
64
127
8128
8 128
255
32640
9 256
511
130816
10 512 1023
523776
11 1024 2047
2096128
12 2048 4095
8386560
Numerele de forma 2n 1 se numesc numere Mersenne.
2) Primele patru numere perfecte n reprezentare binar sunt:
Numere perfecte Reprezentare binar
6
110
28
11100
496
11110000
8128
111111000000
Dac facem o comparaie ntre un numr i suma divizorilor si, observm c avem
trei situaii:
Dac suma divizorilor este egal cu numrul, spunem c numrul este perfect.
Dac suma divizorilor este mai mic dect numrul, spunem c numrul este deficient.
Dac suma divizorilor este mai mare dect numrul, spunem c numrul este bogat.
4. Numere speciale
87
Prima pereche de numere prietene este 220 cu 284. Suma divizorilor lui 220 este 1
+ 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284, iar suma divizorilor lui 284
este 1 + 2 + 4 + 71 + 142 = 220.
Matematicianul arab Tabit ibn Korra (secolul X) a gsit un algoritm de generare a
unor perechi de numere prietene. Acest algoritm a fost publicat fr demonstraie de
ctre Descartes n anul 1638.
Prezentm n continuare algoritmul (reeta) lui Tabit n forma n care se cunotea
n acele vremuri.
Pasul 1: Se pleac de la numrul 6;
Pasul 2: Se construiete, prin dublri succesive irul: 6, 12, 24, 48, 96, 192, ...
Pasul 3: n continuare se iau pe rnd din acest ir perechi succesive. Exemplu: 6 i 12,
12 i 24, 24 i 48,
Pasul 4: Fiecrei perechi de numere i se adaug un al treilea numr, care conine ambii
membri ai dualitii, adic produsul lor. Se obin astfel:
(6, 12); (12, 24); (24, 48); (48, 96);
72
288
1152
4608
Pasul 5: Se scade 1 din fiecare din cele trei numere. Se obine:
(5, 11); (11, 23); (23, 47), (47, 95);
71
287
1151
4607
Pasul 6: Se construiete seria dublurilor pentru numrul 4 (4, 8, 16, 32, 64, ...) care se
scrie sub numerele obinute la pasul anterior.
(5, 11); (11, 23); (23, 47), (47, 95);
71
287
1151
4607
4
8
16
32
Pasul 7: ncepnd cu acest pas ne intereseaz numai tripletele de numere prime. n cazul nostru se pstreaz:
(5, 11); (23, 47); ...
71
1151
4
16
Pasul 8: La acest pas, se nmulesc cele dou numere ale perechii i se obine:
55, 1081, ...
71, 1151
Pasul 9: n final, cele dou numere scrise deasupra multiplilor lui 4 se nmulesc cu
multiplul corespunztor. Se obin astfel perechi de numere prietene:
220, 17296, ...
284, 18416, ...
Observaie
Algoritmul lui Tabit nu genereaz toate perechile de numere prietene. El a gsit
doar o regul de a genera anumite numere perfecte.
n continuare prezentm alte numere crora anticii le acordau o deosebit atenie.
88
4. Numere speciale
3
= 6
4
= 10
Un numr x se numete triangular dac exist un numr natural n, astfel nct suma primelor n numere naturale este egal cu numrul dat x:
1 + 2 + 3 + + n = n (n + 1)/2 = x
4. Numere speciale
89
O problem interesant care se poate formula este urmtoarea: dat fiind un numr
natural, s se stabileasc dac acesta este sau nu numr Fibonacci i, n caz negativ, s
se scrie numrul sub form de sum de numr minim de numere Fibonacci.
90
4. Numere speciale
Vom genera, cu algoritmul de mai sus, numere Fibonacci i ne vom opri n momentul n care ultimul termen este mai mare sau egal cu numrul dat. Dac ultima valoare a variabilei c este numr Fibonacci, algoritmul se termin. n caz contrar, afim
cel mai mare numr Fibonacci mai mic sau egal cu numrul dat (disponibil n variabila b) i scdem din numrul dat valoarea acestuia. Dac b a fost egal cu numrul dat,
algoritmul se termin, n caz contrar relum algoritmul de verificare. Ct timp n (din
care mereu se scade numrul Fibonacci b care se afieaz) este pozitiv, determinm
cte un numr Fibonacci b mai mic sau egal cu valoarea actual a lui n, pe care o scdem din n i o afim.
Algoritm Sum_de_Numere_Fibonacci:
citete n
{ valoarea dat }
a 1
b 1
c a + b
ct timp c < n execut:
a b
b c
c a + b
sfrit ct timp
{ acum b este cel mai mare numr Fibonacci n }
dac c = n atunci
scrie 'Numar Fibonacci'
altfel
scrie n,'=',b
n n - b
ct timp n > 0 execut:
{ ct timp mai avem rest }
ct timp b > n execut:
c b
b a
a c - b
sfrit ct timp
{ acum b este cel mai mare numr Fibonacci n }
scrie '+',b
n n - b
sfrit ct timp
sfrit dac
sfrit algoritm
4. Numere speciale
91
92
4. Numere speciale
Date de ieire
Primul numr natural avnd exact k divizori se va scrie n fiierul NUMAR.OUT.
Restricii i precizri
2 k 100
Exemplu
NUMAR.IN
4
NUMAR.OUT
6
4. Numere speciale
93
Restricii i precizri
1 orice numr dat 1000000000;
dup ultimul numr existent n fiier urmeaz imediat marcajul de sfrit de fiier.
Exemplu
TRI.IN
22 3 55 6 10 11
TRI.OUT
3 55 6 10
REST.OUT
22 11
SIR.OUT
5
94
4. Numere speciale
4.10.7. Prim
Stabilii dac un numr dat este prim sau nu!
Date de intrare
n fiierul de intrare PRIM.IN este scris un singur numr natural.
Date de ieire
Dac numrul citit din fiierul de intrare este prim, n fiierul de ieire PRIM.OUT se
va scrie DA, altfel se va scrie NU.
Exemplu
PRIM.IN
2
PRIM.OUT
DA
4. Numere speciale
95
96
4. Numere speciale
{ primul numr n perechea curent este al doilea numr din perechea precedent }
b a
a b*2
primb prima
dac a*b ar produce depire atunci
depire adevrat
4. Numere speciale
97
altfel
{ efectum produsul, deoarece nu vom avea depire }
prod a*b
sfrit dac
{ ne pregtim s stabilim primalitatea lui a }
prima adevrat
{ i a lui prod }
primprod adevrat
divizor 2
ct timp prima i (divizor rdcina ptrat a lui prod-1) execut:
dac rest[(a-1)/divizor] = 0 atunci
prima fals
sfrit dac
dac rest[(prod-1)/divizor] = 0 atunci
primprod fals
sfrit dac
divizor divizor + 1
sfrit ct timp
coef 2*coef
{ pregtim urmtorul multiplu al lui 4 prin dublare }
98
4. Numere speciale
altfel
scrie x
sfrit dac
sfrit ct timp
sfrit algoritm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Elementele irului
1 2 2 3 3 3 4 4 4 4
Numr triangular = 3
1+2=3
Numr triangular = 6
1+2+3=6
Numr triangular = 10 1 + 2 + 3 + 4 = 10
...
3
10
15 ...
4. Numere speciale
99
100
4. Numere speciale
altfel
ok fals
sfrit dac
dac ok atunci
scrie nr,c
sfrit dac
sfrit ct timp
sfrit pentru
sfrit algoritm
4.11.7. Prim
ntr-o prim abordare, pornim de la definiia numrului prim (un numr prim are exact
doi divizori: 1 i el nsui). n concluzie, vom verifica dac numrul dat are vreun divizor printre numerele 2, 3, ..., n 1.
Algoritm Prim1:
citete nr
{ numrul de verificat}
{ primul divizor diferit de 1 }
diviz 2
ct timp (diviz nr-1) i (rest[nr/diviz] 0) execut:
diviz diviz + 1
sfrit ct timp
dac diviz > nr-1 atunci { dac nu am gsit nici un divizor mai mic dect }
prim adevrat
{ nr1 numrul este prim, n caz contrar nu este }
altfel
prim fals
sfrit dac
afiare
sfrit algoritm
Algoritmul poate fi mbuntit considerabil dac tratm separat cazul acelor numere care nu necesit nici o mprire pentru stabilirea proprietii. Acestea sunt numrul
1 i numerele pare. n rest, proprietatea de divizibilitate o vom verifica doar cu numere
impare, tiind c un numr impar nu poate avea nici un divizor par. n plus, nu vom
genera divizori mai mari dect rdcina ptrat a numrului, deoarece divizorii mai
mari au fost gsii, dac exist, sub forma unui ct al mpririi numrului cu un divizor mai mic.
Algoritm Prim2:
citete nr
dac nr = 1 atunci
prim fals
{ 1 nu este prim }
4. Numere speciale
101
altfel
dac nr este numr par atunci
{ numere pare }
prim nr=2
{ singurul numr par prim este 2 }
altfel
{ numere impare }
{ primul divizor posibil al unui numr impar }
diviz 3
rad parte ntreag din rdcina ptrat a lui nr
afiare
sfrit algoritm