Escrever um algoritmo (Python) que calcule e escreva o produto dos números primos entre N1 e N2 (N1
Soluções para a tarefa
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.