Exercícios Resolvidos de Loops infinitos, loops aninhados e os comandos break e continue
Ver TeoriaEnunciado
Receba um número qualquer do usuário. Imprima todos os números primos existentes entre 0 e
Passo 1
Vamos lá pessoal. Essa questão é massa!
Pra encontrar um número primo basta a gente criar um loop e testar todas as divisões possíveis. Se o número for divisível apenas por 1 e por ele mesmo, então o número é primo.
Mas a gente precisa encontrar vários números primos! Então vamos criar outro loop, mais externo, pra poder repetir o processo de teste para todos os números.
Passo 2
Vamos começar declarando as variáveis. Vamos precisar de uma variável para conter o número inteiro digitado pelo usuário, chamada . E outras duas variáveis inteiras chamadas e serão usadas nos nossos loops.
Também vamos criar uma variável lógica chamada que será inicializada com o valor . Dessa forma, todo número é considerado primo até que se prove o contrário!
Então, vamos declarar essas variáveis no código:
Passo 3
Antes de escrever o laço precisamos receber o número do usuário. Usamos o para pedir o número e, com o , armazenamos o valor na variável correta.
Passo 4
Agora vamos criar nosso primeiro loop usando o . Nesse loop vamos testar todos os números de 2 até , para descobrir quais são primos. Por definição não é primo, então o laço deve começar em . Então, a cada iteração, a variável assume um desses valores (de 2 até ) e é testada. Dentro do parênteses ali à direita do , é indicado o valor inicial da variável , o ponto de parada do loop e o comando que adiciona 1 à variável a cada iteração. Esses 2 informações devem ficar separadas por ponto e vírgula.
Agora vamos criar um segundo loop, para verificar se o número é ou não é primo. Pra isso iniciamos nosso laço em , pois não faz sentido testar a divisão por . E esse laço ira ser incrementado de um em um até , pois não faz sentido testar a divisão por si mesmo. Um número não primo é divisível por outros números além de 1 e ele mesmo, por isso testamos entre 2 e .
Pra testar se é divisível por vamos usar uma estrutura . Se o for divisível por então ele não é primo, e o valor lógico da variável deve ser mudado para e nesse caso não será preciso continuar os testes, então usamos o comando para interromper o loop interno.
Uma vez que o loop interno é concluído, ou seja, já sabemos se um determinado número é primo, precisamos imprimir essa mensagem. Precisamos imprimir todos os números que são primos. Então utilizamos outro comando que, caso o número testado seja primo, então vamos imprimir o número seguido de um espaço em branco. Esse fica dentro do loop externo, ou seja, logo que verificamos que um número é primo, já imprimimos seu valor, antes de analisar o próximo. E como não usamos o comando (que pula linha), todos os números primos são impressos na mesma linha, por isso é necessário prever um espaço.
Depois de imprimir um número primo, é hora de analisar o próximo. Mas antes, ainda dentro do loop externo, vamos precisar resetar a variável pro valor . Isso garante que a próxima iteração do laço ira funcionar corretamente.
Passo 5
Vamos dar uma olhada no resultado final pra testar. Vamos rodar o programa e inserir um valor qualquer. Eu vou usar