3
respostas

Opinião do Instrutor - Questão 7

Utilizando a opinião do instrutor para questão 7 observei que temos 2 resultados quando o número não é divisível por 2.

#coletamos o número
num = int(input('Insira um número inteiro: '))

# números inteiros iguais ou abaixo de 1 não consideramos primos
if num > 1:
    for i in range(2, num):
        # verificamos todos os restos de divisões entre todos os números abaixo de num
        # se algum resto for 0, então ele é divisível por outro número além dele e 1
        if (num % i) == 0:
            print(f'{num} não é um número primo')
            break
        # essa mensagem é repetida até que 1 resto d
        else:
            print(f'{num} é um número primo')
else:
    print(f'{num} não é um número primo')

Resultado do código acima utilizando a entrada 169

Fiz uma nova verificação na possibilidade dele ser primo

#coletamos o número
num = int(input('Insira um número inteiro: '))

# números inteiros iguais ou abaixo de 1 não consideramos primos
if num > 1:
    for i in range(2, num):
        # verificamos todos os restos de divisões entre todos os números abaixo de num
        # se algum resto for 0, então ele é divisível por outro número além dele e 1
        if (num % i) == 0:
            print(f'{num} não é um número primo')
            break
        # o número só pode ser considerado primo, depois de testada todas as divisões, ou seja, i é igual ao último range
        elif i == num-1:
            print(f'{num} é um número primo')
else:
    print(f'{num} não é um número primo')

Resultado do código acima utilizando a entrada 169

Esta análise esta correta ou foi algum erro do notebook?

3 respostas

Oi, tudo bem?

Sua análise está correta! No código que você apresentou, você adicionou uma condição elif i == num-1 para verificar se o número só pode ser considerado primo após testar todas as divisões. Essa é uma forma válida de verificar se um número é primo.

Obrigado por compartilhar com os demais colegas aqui no fórum!

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, tudo bem? Também fiquei com dúvida nesse exercício No seu exemplo, há ainda algum problema, pois 169 não é primo (ele é múltiplo de 13 também) Tentei resolver de forma que o programa identifica a quantidade de restos iguais a zero. Dá forma que escrevi o programa, para números primos só poderia haver um resto igual a zero, que seria a divisão dele por ele mesmo (não considerando a divisão por 1).

Segue o formato que escrevi, não sei se está totalmente certo, mas busquei vários valores de números primos e, até então funcionou

#coletamos o número
num = int(input('Escolha um número para saber se ele é primo '))
quant_resto_0 = 0

# números inteiros iguais ou abaixo de 1 não consideramos primos
if num > 1:
  for i in range(2,num + 1):
    # verificamos todos os restos de divisões entre todos os números entre 2 e num
    # Nesse situação, sempre haverá pelo menos um resto 0 (num/num)
    if num % i == 0:
      # O contador servirá para nos dizer quantas vezes o resto zero apareceu, ou seja, para números primos ocorrerá uma única vez
      quant_resto_0 += 1
  # Sabendo que para números primos, o contador terá um valor de 1, fazemos a seguinte condição
  if quant_resto_0 == 1: 
    print(f'{num} é um número primo')
  else:
    print(f'{num} não é um número primo')
else: 
  print(f'{num} não é um número primo')

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Outra coisa que notei foi que a entrada 2 não é contemplada, pois em range (2, num) ficaria range (2, 2), o que não rodaria, pois a última iteração seria com i = 2 - 1, maior que a primeira. Por isso, não entra no for. Como já entrou no if, não vai para o else, então nada é printado com a entrada é 2