Non divisibili per 2, 3 e 5

Esame di Stato 2014 – Quesito 5

Dei numeri 1, 2, 3, …, 6000, quanti non sono divisibili né per 2, né per 3, né per 5?

Soluzione 1

Conta i numeri che superano il test di NON divisibilità per 2, 3 e 5

N = 6000

soluzione = 0
for n in range(1, N+1):
    if(n%2 != 0) and (n%3 != 0) and (n%5 != 0):
        soluzione += 1

print("Soluzione:", soluzione)  # 1600

Soluzione 2

Conta i multipli di 2 oppure 3 oppure 5 e li sottrae

N = 6000
 
multipli = 0
for n in range(1, N+1):
    if(n%2 == 0) or (n%3 == 0) or (n%5 == 0):
        multipli += 1
 
soluzione = N-multipli

print("Multipli :", multipli )  # 4400
print("Soluzione:", soluzione)  # 1600

Soluzione 3

Segue lo stesso schema della discussione “matematica”

  1. conta separatamente i multipli di 2, 3, 5, 6, 10, 15, 30
  2. fa il calcolo “complicato”
N = 6000

m2 = m3 = m5 = m6 = m10 = m15 = m30 = 0
for n in range(1, N+1):
    if(n% 2 == 0): m2  += 1
    if(n% 3 == 0): m3  += 1
    if(n% 5 == 0): m5  += 1
    if(n% 6 == 0): m6  += 1
    if(n%10 == 0): m10 += 1
    if(n%15 == 0): m15 += 1
    if(n%30 == 0): m30 += 1

multipli  = m2+m3+m5-m6-m10-m15+m30
soluzione = N-multipli

print("Multipli di  2:", m2       )  # 3000
print("Multipli di  3:", m3       )  # 2000
print("Multipli di  5:", m5       )  # 1200
print("Multipli di  6:", m6       )  # 1000
print("Multipli di 10:", m10      )  # 600 
print("Multipli di 15:", m15      )  # 400
print("Multipli di 30:", m30      )  # 200
print("Multipli      :", multipli )  # 4400
print("Soluzione     :", soluzione)  # 1600