Matematica e codifica vanno di pari passo: i numeri sono ovunque nella programmazione. Che tu stia controllando se un numero è primo, generando sequenze di Fibonacci o individuando un palindromo, queste piccole sfide affilano sia le tue abilità matematiche che la tua logica di codifica.
In questo articolo, esploreremo 20 esercizi di programmazione adatti ai principianti basati sui numeri. Per ciascuno, riceverai una breve spiegazione del concetto matematico, alcuni input e output di esempio, e una soluzione Python pronta all'uso. È un modo divertente per praticare la codifica mentre impari come idee matematiche come i quadrati perfetti, i cubi e i numeri triangolari possono prendere vita nel codice.
1. Somma dei Primi N Numeri Naturali
Cosa vuole l'esercizio:
Scrivi un programma per trovare la somma dei primi n numeri naturali. Questo ti aiuta a praticare i cicli o le formule matematiche.
Cosa sono i numeri naturali?
I numeri naturali sono i numeri di conteggio che partono da 1: 1, 2, 3, 4, …
Input di Esempio
5
Output di Esempio
15
Soluzione Python
# Leggi n e calcola la somma dei primi n numeri naturali usando la formula chiusa
n = int(input("Inserisci n: "))
# Usando l'aritmetica intera (//) per evitare i float
total = n * (n + 1) // 2
print(total)
2. Controllo Pari o Dispari
Cosa vuole l'esercizio:
Prendi un input intero e stampa se è pari o dispari.
Cosa significa pari/dispari?
I numeri pari sono divisibili per 2 (es. 2, 4, 6). I numeri dispari lasciano un resto di 1 quando divisi per 2 (es. 1, 3, 5).
Input di Esempio
7
Output di Esempio
7 è dispari
Soluzione Python
# Determina se l'intero di input è pari o dispari usando il modulo
n = int(input("Inserisci un numero: "))
if n % 2 == 0:
print(f"{n} è pari")
else:
print(f"{n} è dispari")
3. Controllo Numero Primo
Cosa vuole l'esercizio:
Scrivi un programma per controllare se un numero dato è primo.
Cosa è un numero primo?
Un numero primo è maggiore di 1 e divisibile solo per 1 e se stesso (es. 2, 3, 5, 7).
Input di Esempio
13
Output di Esempio
13 è primo
Soluzione Python
# Controlla la primalità tentando la divisione fino a sqrt(n)
n = int(input("Inserisci un numero: "))
if n < 2:
print(f"{n} non è primo")
else:
for d in range(2, int(n**0.5) + 1):
if n % d == 0:
print(f"{n} non è primo")
break
else:
print(f"{n} è primo")
4. Somma delle Cifre
Cosa vuole l'esercizio:
Trova la somma di tutte le cifre di un numero.
Perché le somme delle cifre sono importanti?
Le somme delle cifre appaiono nelle regole di divisibilità e in vari rompicapi numerici (es. divisibile per 3 se la somma delle cifre è divisibile per 3).
Input di Esempio
1234
Output di Esempio
10
Soluzione Python
# Somma le cifre iterando i caratteri e convertendoli in interi
s = input("Inserisci un numero: ").strip()
digit_sum = sum(int(ch) for ch in s if ch.isdigit())
print(digit_sum)
5. Controllo Numero Palindromo
Cosa vuole l'esercizio:
Controlla se un numero si legge allo stesso modo all'indietro e in avanti.
Cosa è un numero palindromo?
Un numero come 121, 1331 o 12321 che rimane lo stesso quando viene invertito.
Input di Esempio
12321
Output di Esempio
12321 è un palindromo
Soluzione Python
# Confronta la stringa con la sua inversione per testare il palindromo
s = input("Inserisci un numero: ").strip()
print(f"{s} è un palindromo" if s == s[::-1] else f"{s} non è un palindromo")
6. Trova Tutti i Fattori di un Numero
Cosa vuole l'esercizio:
Elenca tutti i numeri che dividono n in modo uniforme.
Cosa sono i fattori?
I fattori sono interi che puoi moltiplicare per ottenere n. Per 12, i fattori sono 1, 2, 3, 4, 6, 12.
Input di Esempio
12
Output di Esempio
1 2 3 4 6 12
Soluzione Python
# Genera tutti i divisori testando da 1..n
n = int(input("Inserisci un numero: "))
factors = [d for d in range(1, n+1) if n % d == 0]
print(" ".join(map(str, factors)))
7. Controllo Numero Perfetto
Cosa vuole l'esercizio:
Controlla se n è uguale alla somma dei suoi divisori propri (escludendo se stesso).
Cosa è un numero perfetto?
I numeri come 6 (=1+2+3) e 28 (=1+2+4+7+14) sono numeri perfetti.
Input di Esempio
28
Output di Esempio
28 è un numero perfetto
Soluzione Python
# Somma i divisori propri (escludi n) e confronta con n
n = int(input("Inserisci un numero: "))
proper = [d for d in range(1, n) if n % d == 0]
print(f"{n} è un numero perfetto" if sum(proper) == n else f"{n} non è un numero perfetto")
8. Controllo Numero di Armstrong (Narcisistico)
Cosa vuole l'esercizio:
Controlla se n è uguale alla somma delle sue cifre elevate alla potenza del numero di cifre.
Cosa è un numero di Armstrong?
Esempio: 153 = 1³ + 5³ + 3³; 9474 = 9⁴ + 4⁴ + 7⁴ + 4⁴.
Input di Esempio
153
Output di Esempio
153 è un numero di Armstrong
Soluzione Python
# Eleva ogni cifra alla potenza del numero totale di cifre e somma
s = input("Inserisci un numero: ").strip()
p = len(s)
arm = sum(int(ch)**p for ch in s)
print(f"{s} è un numero di Armstrong" if arm == int(s) else f"{s} non è un numero di Armstrong")
9. Controllo Quadrato Perfetto
Cosa vuole l'esercizio:
Controlla se un numero è un quadrato perfetto.
Cosa è un quadrato perfetto?
Un numero che può essere scritto come k² (es. 4, 9, 16, 25).
Input di Esempio
49
Output di Esempio
49 è un quadrato perfetto
Soluzione Python
# Usa la radice quadrata intera per evitare problemi con i numeri in virgola mobile
import math
n = int(input("Inserisci un numero: "))
print(f"{n} è un quadrato perfetto" if math.isqrt(n)**2 == n else f"{n} non è un quadrato perfetto")
10. Controllo Cubo Perfetto
Cosa vuole l'esercizio:
Controlla se un numero è un cubo perfetto.
Cosa è un cubo perfetto?
Un numero che può essere espresso come k³ (es. 8, 27, 64).
Input di Esempio
27
Output di Esempio
27 è un cubo perfetto
Soluzione Python
# Approssima la radice cubica arrotondando e verifica ricubando
n = int(input("Inserisci un numero: "))
croot = round(n ** (1/3))
print(f"{n} è un cubo perfetto" if croot**3 == n else f"{n} non è un cubo perfetto")
11. Generatore di Sequenza di Fibonacci
Cosa vuole l'esercizio:
Genera i primi n numeri di Fibonacci.
Cosa è un numero di Fibonacci?
Sequenza che inizia con 0, 1 dove ogni nuovo termine è la somma dei due precedenti: 0, 1, 1, 2, 3, 5, 8, …
Input di Esempio
7
Output di Esempio
0 1 1 2 3 5 8
Soluzione Python
# Costruisci iterativamente la sequenza di Fibonacci usando due tracker
n = int(input("Inserisci n: "))
a, b = 0, 1
seq = []
for _ in range(n):
seq.append(a)
a, b = b, a + b
print(" ".join(map(str, seq)))
12. Controlla se un Numero è nella Sequenza di Fibonacci
Cosa vuole l'esercizio:
Controlla se un numero dato appartiene alla sequenza di Fibonacci.
Fatto matematico:
n è Fibonacci se (5n² + 4) o (5n² − 4) è un quadrato perfetto.
Input di Esempio
21
Output di Esempio
21 è un numero di Fibonacci
Soluzione Python
# Usa il test del quadrato perfetto 5n^2±4 per controllare l'appartenenza a Fibonacci
import math
def is_square(x: int) -> bool:
return math.isqrt(x)**2 == x
n = int(input("Inserisci un numero: "))
if is_square(5*n*n + 4) or is_square(5*n*n - 4):
print(f"{n} è un numero di Fibonacci")
else:
print(f"{n} non è un numero di Fibonacci")
13. Controllo Numero Triangolare
Cosa vuole l'esercizio:
Controlla se n è triangolare: n = k(k+1)/2 per qualche intero k.
Cosa è un numero triangolare?
Formano triangoli di punti: 1, 3, 6, 10, 15, …
Input di Esempio
15
Output di Esempio
15 è un numero triangolare
Soluzione Python
# Risolvi k(k+1)/2 = n controllando k = floor((sqrt(8n+1)-1)/2)
import math
n = int(input("Inserisci un numero: "))
k = int((math.isqrt(8*n + 1) - 1) // 2)
print(f"{n} è un numero triangolare" if k * (k + 1) // 2 == n else f"{n} non è un numero triangolare")
14. Numero Razionale (Decimale → Frazione)
Cosa vuole l'esercizio:
Converti un decimale in una frazione semplificata p/q.
Cosa è un numero razionale?
Un numero esprimibile come rapporto di interi (es. 0.75 = 3/4).
Input di Esempio
0.75
Output di Esempio
3/4
Soluzione Python
# Usa Fraction per convertire il decimale in forma p/q e semplificare
from fractions import Fraction
x = float(input("Inserisci un decimale: "))
print(Fraction(x).limit_denominator())
15. Controllo Numero Triangolare
Cosa vuole l'esercizio:
Controlla se un numero è triangolare, il che significa che può formare un triangolo equilatero.
Cosa è un numero triangolare?
I numeri triangolari sono somme dei primi n numeri naturali: 1, 3, 6, 10, 15…
Input di Esempio
10
Output di Esempio
10 è un numero triangolare
Soluzione Python
import math
n = int(input("Inserisci un numero: "))
# Formula: se 8n+1 è un quadrato perfetto, allora n è triangolare
check = 8 * n + 1
if int(math.isqrt(check))**2 == check:
print(f"{n} è un numero triangolare")
else:
print(f"{n} non è un numero triangolare")
16. Generatore di Sequenza di Fibonacci
Cosa vuole l'esercizio:
Genera la sequenza di Fibonacci fino a n termini.
Cosa è la sequenza di Fibonacci?
È una sequenza in cui ogni numero è la somma dei due precedenti: 0, 1, 1, 2, 3, 5, 8…
Input di Esempio
7
Output di Esempio
0 1 1 2 3 5 8
Soluzione Python
n = int(input("Inserisci il numero di termini: "))
a, b = 0, 1
for _ in range(n):
print(a, end=" ")
a, b = b, a + b
17. Somma delle Cifre
Cosa vuole l'esercizio:
Calcola la somma di tutte le cifre in un numero dato.
Cosa significa?
Esempio: le cifre di 1234 sono 1+2+3+4 = 10.
Input di Esempio
1234
Output di Esempio
10
Soluzione Python
n = input("Inserisci un numero: ")
# Converti ogni carattere di nuovo in int e somma
s = sum(int(d) for d in n)
print(s)
18. Inverti un Numero
Cosa vuole l'esercizio:
Inverti le cifre del numero dato.
Cosa significa?
Esempio: 12345 diventa 54321.
Input di Esempio
12345
Output di Esempio
54321
Soluzione Python
n = input("Inserisci un numero: ")
# Usa lo slicing per invertire
print(n[::-1])
19. Massimo Comun Divisore (GCD)
Cosa vuole l'esercizio:
Trova il numero più grande che divide due interi senza resto.
Cosa è il GCD?
Il più grande divisore comune a entrambi i numeri. Esempio: gcd(12, 18) = 6.
Input di Esempio
12 18
Output di Esempio
6
Soluzione Python
import math
a, b = map(int, input("Inserisci due numeri: ").split())
# Usa math.gcd per efficienza
print(math.gcd(a, b))
20. Minimo Comune Multiplo (LCM)
Cosa vuole l'esercizio:
Trova il numero più piccolo che è divisibile per entrambi gli interi dati.
Cosa è il LCM?
Il minimo comune multiplo di due numeri. Esempio: lcm(4, 6) = 12.
Input di Esempio
4 6
Output di Esempio
12
Soluzione Python
import math
a, b = map(int, input("Inserisci due numeri: ").split())
# Formula: lcm(a, b) = abs(a*b) // gcd(a, b)
print(abs(a*b) // math.gcd(a, b))