Um número A é um número primo se tiver exatamente dois divisores. Ou seja, se apenas tiver como divisores os números 1 e ele próprio.
Exemplo de algoritmo para abordagem a este problema.
Nota: este algoritmo foi desenvolvido apenas para números inteiros positivos.
Proposta de resolução:
# pede ao utilizador um número inteiro
numero = int(input("Insere um número: "))
# Ciclo só é "quebrado" quando o utilizador insere um número inteiro positivo
while True:
if numero-int(numero) != 0 or numero < 0:
numero = int(input("O número inserido não é válido.\n\t Insere outro número: "))
else:
# inicializar a lista que receberá os divisores do número dado
divisores = []
# inicializar a variável que servirá para testar a divisibilidade
i = 1
# ciclo para obter os divisores (para valores entre 1 e o número dado pelo utilizador)
while i <= numero:
# verifica se o número é divisível por i
if numero % i == 0:
# caso o número "num" seja divisível por "i" então adiciona-o à lista
divisores.append(i)
# incrementa o valor de i para testar a divisibilidade na próxima iteração do ciclo
i += 1
# após concluir o ciclo do cálculo dos divisores é necessário verificar se:
# - o número introduzido é par diferente de 2 e, neste caso, não é primo;
# - a lista de divisores tem apenas 2 elementos;
# - se os divisores da lista são apenas 1 e o próprio número (inicialmente introduzido pelo utilizador).
if numero % 2 == 0 and numero != 2 :
print(f"\nO numero {numero} é par e diferente de 2. Logo {numero} não é um número primo.")
elif len(divisores) == 2 and divisores[0] == 1 and divisores[1] == numero:
print(f"\nOs divisores de {numero} são {divisores}. Logo {numero} é um número primo.")
else:
print(f"\nOs divisores de {numero} são {divisores}. Logo {numero} não é um número primo.")
break