Numero primo

Soluzione 1

  1. Se esiste divisore in [2, n-1] che divide n allora n non è primo
  2. 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

  1. 2 è primo
  2. I numeri pari maggiori di 2 non sono primi
  3. I numeri dispari che hanno un divisore dispari, divisore != n, non sono primi
  4. 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