(algoritmo) FAÇA UM PROGRAMA QUE RECEBA DEZ NÚMEROS INTEIROS E MOSTRE A QUANTIDADE DE NÚMERO PRIMOS DENTRE OS NÚMEROS QUE FORAM DIGITADOS.
Soluções para a tarefa
Podemos dividir o problema em alguns passos:
- Criar uma variável para monitorar a quantidade de números primos ja vistos;
- Para cada número recebido pelo programa, cheque se ele é primo;
- Se sim, adicione um no contador;
- Repita o processo para até que todos os números tenham sido checados (no nosso caso, 10 vezes).
Um possível pseudocódigo para este problema pode ser:
função primos(números):
contador = 0
para cada número em números:
se éPrimo(número) == true:
contador += 1
retorne contador
É claro, isso implica na função éPrimo(n), um problema clássico na ciência da computação. Muitos são os métodos para a definição de um número como primo ou composto (compostos são aqueles números que não são primos, como 4, 6, 8, 9...). Embora não seja o mais performático, o método de tentativa e erro pode ser aplicado nesse caso, contanto que os números a serem testados não sejam muito grandes.
Uma sequência de de passos possível para a elaboração de uma função que receba um número e retorne true se for primo e false caso contrário, é a seguinte:
- Se o número for igual a 2, retorne true;
- Se o número for par, retorne false;
- Divida cada número menor que a raiz quadrada do número a ser testado, e se o resultado for um número inteiro, significa que o número tem divisores, e portanto não é primo. Se for esse caso, retorne false;
- Se após que todos os números tiverem sido testados nenhum conseguir dividir o número sendo testado, o número é primo, portanto retorne True.
Um possível pseudocódigo é o seguinte:
função éPrimo(n):
se n == 2:
retorne true
se n % 2 == 0:
retorne false
para cada i menor que :
se n % i == 0:
retorne false
retorne true
Resposta:
programa
{
funcao inicio()
{
inteiro num, result
result = 0
escreva("Olá!!! \n")
escreva("Digite um número menor ou igual a 30 : ")
leia(num)
se (num <= 30)
{
para (inteiro i = 2 ; i <= num / 2; i++)
{
se (num % i == 0)
{
result++
}
}
se (result == 0 )
{
escreva("O Numero digitado é um número PRIMO!!")
}
senao se(num % 2 == 0)
{
escreva("Número PAR!")
}
senao
{
escreva("Número IMPAR!")
}
}
senao
{
escreva("Você digitou um número Maior que 30!!!")
}
}
}
Explicação: