Numero triangolare: numero rappresentabile in forma di triangolo; presa una quantità di elementi pari al numero in esame, è possibile disporre gli elementi in modo da formare un triangolo equilatero, isoscele o rettangolo.
Ad es. : presi 3 punti ● ● ● è possibile disporli sul foglio in modo tale da formare un triangolo
● ●
● ● opppure ● ●
- in modo analogo per 6 punti
● ●
● ● ● ●
● ● ● ● ● ●
I primi 10 numeri triangolari: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …
(1, dal punto di vista figurativo, può essere immaginato come un triangolo di dimensioni talmente ridotte che si vede un solo punto).
N-esimo numero triangolare Tn = somma dei primi N numeri naturali.
Ad es.:
T1 = somma del primo numero naturale = 1
T2 = somma dei primi due numeri naturali (1+2) = 3
T3 = somma dei primi tre numeri naturali (1+2+3) = 6
Quindi la successione dei numeri triangolari è:
(1) T1 = 1
(2) Tn = Tn-1 + n (n = 2, 3, 4, …)
In forma più sintetica:
(3) Tn = ∑ k (per k da 1 a n)
(4) Tn = n*(n+1)/2 (Formula di Gauss)
Alcune proprietà dei numeri triangolari:
- Differenza tra 2 numeri triangolari vicini: dalla (2) si ha: Tn – Tn-1 = n
3 – 1 = 2
6 – 3 = 3
10 – 6 = 4
15 – 10 = 5
21 – 15 = 6
28 – 21 = 7
36 – 28 = 8
45 – 36 = 9
55 – 45 = 10
- Ogni numero può essere ottenuto come somma di al massimo 3 numeri triangolari
Ad es.
91 = 55 + 36
14 = 10 + 3 + 1
- Somma di 2 numeri triangolari vicini: è un numero quadrato
1 + 3 = 4 = 22
3 + 6 = 9 = 32
6 + 10 = 16 = 42
10 + 15 = 25 = 52
15 + 21 = 36 = 62
21 + 28 = 49 = 72
28 + 36 = 64 = 82
36 + 45 = 81 = 92
- Per stabilire se n è un numero triangolare si deve calcolare l’espressione
Se m è un intero allora n sarà l’m-esimo numero triangolare, infatti, sostituendo n con
Tm = m*(m+1)/2 il termine sotto radice diventa:
quindi:
m = m
Esercizi sui numeri triangolari
- Stampare i primi N numeri triangolari.
- Dato un numero, verificare se è un numero triangolare.
- Calcolare l’N-esimo numero triangolare.
- Calcolare il primo numero triangolare maggiore di N.
- Calcolare il primo numero triangolare minore di N.
Esercizio 1
Stampare i primi N numeri triangolari.
Variabili
Input | Comodo | Output |
n: intera | k: intera | somma: intera (è il numero triangolare di posizione k) |
n: valore, fornito dall’utente, che indica quanti numeri triangolari si devono stampare.
k: variabile che permette di generare tutti i numeri naturali a partire da 1 fino a n.
somma: numero triangolare di posizione k, infatti, tenendo presente le
- T1 = 1
- Tn = Tn-1 + n (n = 2, 3, 4, …)
i vari numeri triangolari vengono generati sommando al vecchio numero triangolare Tn-1 (somma) il valore attuale di n (k).
#NumeriTriangolari_es_001
#rispetto al diagramma a blocchi, viene stampato anche il triangolo di “*” costruito man mano che
#si generano i vari numeri triangolari.
#—- Main ———-
n_str = input(“Stampare i primi n numeri triangolari; n = “)
n = int(n_str)
somma = 0
k = 1
triangolo = “pos.(i)tT(i)n” #prima riga del triangolo di “*”
while k <= n:
somma += k
print(” (T”+str(k)+”)t= ” + str(somma))
j = 0 #riga k-esima del triangolo di “*”
triangolo += str(k)+ “t”+ str(somma)+ “t”
while j < k:
triangolo += “*”
j += 1
triangolo += “n”
k += 1
print()
print (triangolo)
print (“nFINE”)
Esercizio 2
Dato un numero n, verificare se è un numero triangolare.
Variabili
Input | Comodo | Output |
n: intera | k: intera | somma: intera (è il numero triangolare di posizione k) |
n: valore, fornito dall’utente: numero da controllare.
k: variabile che permette di generare tutti i numeri naturali a partire da 1 fino a n.
somma: numero triangolare di posizione k, infatti, tenendo presente le
- T1 = 1
- Tn = Tn-1 + n (n = 2, 3, 4, …)
i vari numeri triangolari vengono generati sommando al vecchio numero triangolare Tn-1 (somma) il valore attuale di n (k). La generazione dei numeri triangolari ha termine quando somma (ultimo numero triangolare generato) >= n; in tal caso se somma = n allora si può concludere che n è un numero triangolare.
# NumeriTriangolari _002 – codifica Python
#—- Main ———-
n_str = input(“Verificare se è triangolare il numero: “)
n = int(n_str)
somma = 0
k = 1
while somma < n:
somma += k
k += 1
print()
if (somma == n):
print(“Il numero ” + n_str + ” è il numero triangolare di posizione: ” + str(k-1))
else:
print(“Il numero ” + n_str + ” non è un numero triangolare”)
print (“nFINE”)
Esercizio 2a
Dato un numero n, verificare se è un numero triangolare utilizzando la seguente formula:
se n è un numero triangolare m deve essere un intero.
Perché m possa essere intero:
- il termine sotto radice (radicando) b = 8n + 1 deve essere un quadrato perfetto cioè b = c2 con c numero naturale > 1
- il numeratore della (1) deve essere un numero pari.
Proprietà dei quadrati perfetti: un numero intero è un quadrato perfetto quando, scomposto in fattori primi, gli esponenti dei fattori primi sono tutti pari.
Variabili
Input | Comodo | Output |
n: intera | k: intera | messaggio |
radicando: intera | ||
radice: intera | ||
etriangolare: boolean |
radicando è un quadrato perfetto? Si utilizza la funzione quadratoperfetto per verificarlo.
radice -1 (numeratore della (1) ) è pari? si utilizza l’operatore modulo (%)
(a%b resto della divisione intera tra a e b)
- (radice -1) % 2 = 0 allora è pari
- (radice -1) % 2 <> 0 allora è dispari
Variabili funzione quadratoperfetto
Input | Comodo | Output |
q: intera | k: intera | eqp: boolean |
esponente: intera |
Funzione quadratoperfetto(q): il valore passato come parametro (q)
Funzione quadratoperfetto
Programma Python
#NumeriTriangolari_es_002a
#verifica se n è triangolare utilizzando la formula
#m = (sqrt(8n+1)-1)/2
import math
def quadratoperfetto(q):
eqp = False #è (q)uadrato (p)erfetto
k = 2
esponente = 0
epari = True
while (q > 1 and epari):
if (q%k == 0):
esponente += 1
q /= k
else:
if (esponente % 2 != 0):
epari = False
esponente = 0
k = k +1
if epari:
eqp = True
return (eqp)
#—- Main ———-
n_str = input(“valore = “)
n = int(n_str)
etriangolare = False
radicando = 8*n + 1
if quadratoperfetto(radicando):
radice = math.sqrt(radicando)
if (((radice – 1) % 2) == 0 ):
etriangolare = True
m = int((radice -1) / 2)
if (etriangolare):
print (n_str,” è triangolare di posizione”, str(m))
else:
print (n_str,” non è triangolare “)
print()
print (“nFINE”)