Soluzione 1
- Se esiste divisore in [2, n-1] che divide n allora n non è primo
- Se non esiste divisore … allora n è primo
def primo(n):
for divisore in range(2, n):
if(n % divisore == 0):
return False
return True
Soluzione 2
- 2 è primo
- I numeri pari maggiori di 2 non sono primi
- I numeri dispari che hanno un divisore dispari,
divisore != n, non sono primi - Non è necessario controllare i divisori maggiori della radice quadrata di n
def primo(n):
if(n == 2):
return True
elif(n % 2 == 0): # Numeri pari
return False
else:
ultimo = int(math.sqrt(x))
for divisore in range(3, ultimo+1, 2):
if(n % divisore == 0):
return False
return True
Più corto?
def primo(n):
if(n == 2): return True
if(n % 2 == 0): return False
ultimo = int(math.sqrt(x))
for divisore in range(3, ultimo+1, 2):
if(n % divisore == 0):
return False
return True