• Matéria: Informática
  • Autor: andradeandressa58
  • Perguntado 6 anos atrás

Escrever um algoritmo (Python) que calcule e escreva o produto dos números primos entre N1 e N2 (N1

Respostas

respondido por: GeBEfte
2

Perceba que, pelo texto, os valores N1 e N2 não serão contabilizados (não fazem parte do intervalo).

Ainda, fique anotado que o código que será apresentado não possui uma validação dos dados nem tratamento de erros/exceções, ou seja, conta-se com a correta utilização do programa.

Dito isso, vamos começar organizando um código para identificar se um numero é primo. Um numero é primo se for divisível apenas por 1 e ele mesmo.

cont=0

for c in range(1,num+1):

.....if num%c==0:

..........cont+=1

if cont==2:

.....print('É primo')

No código acima, inicializamos um contador ("cont") com valor 0 e iniciamos um laço for de 1 até o numero que será verificado  (1 , 2 , ... , num).

Caso (if) o resto da divisão de num por c for nulo, o contador é incrementado, ou seja, achamos um divisor de num.

Terminado o laço, caso o contador (numero de divisores de num) for igual a 2, num é primo.

Certo, esse código precisará ser repetido para cada numero no intervalo de números entre os limites N1 e N2.

Assim, podemos utilizar outro laço for:

N1=int(input('Digite o limite inferior: '))

N2=int(input('Digite o limite superior: '))

contPrimos=0

for i in range(N1+1,N2):

.....Código para verificação de primo

No código, lemos dois inteiros do teclado guardando nas variáveis N1 e N2 e, depois, rodamos um laço de N1+1 até N2.

Lembrando, N1 e N2 não estão sendo contabilizados neste intervalo.

O contador contPrimos será utilizado depois para contabilizar a quantidade de primos.

Até agora, apenas verificamos, para cada numero entre N1 e N2, se este é primo.

O enunciado, no entanto, nos pede o produto de todos que forem primos.

Assim, antes de prosseguirmos com este passo, vamos juntar todo código montado até agora.

N1=int(input('Digite o limite inferior: '))

N2=int(input('Digite o limite superior: '))

contPrimos=0

for i in range(N1+1,N2):

.....cont=0

.....for c in range(1,i+1):

..........if i%c==0:

...............cont+=1

.....if cont==2:

..........contPrimos+=1

Perceba que no segundo for, tivemos de fazer alterações.

Trocamos "num" por "i" (o iterador do primeiro for) e, em vez de avisar que o numero é primo, vamos incrementar o contPrimos.

O código final ficará:

N1=int(input('Digite o limite inferior: '))

N2=int(input('Digite o limite superior: '))

contPrimos=0

produto=1

for i in range(N1+1,N2):

.....cont=0

.....for c in range(1,i+1):

..........if i%c==0:

...............cont+=1

.....if cont==2:

..........contPrimos+=1

..........produto*=c

if contPrimos>0:

.....print(f'O produto dos primos entre {N1} e {N2} vale {produto}.')

else:

.....print(f'Não há numeros primos entre {N1} e {N2}. O produto vale 0.')

Para contabilizarmos o produto dos primos, vamos inicializar a variável produto com 1 (elemento neutro da multiplicação) e, caso o numero verificado no momento for primo, vamos multiplicar o numero pela variável produto e guardar na mesma variável (produto).

No final verificamos o numero de primos identificados, caso seja maior que 0, mostramos o produto calculado, caso contrario, é mostrado que o produto é nulo.

Em anexo o código com alguns exemplos rodando.

Anexos:
Perguntas similares