Escreva um algoritmo que, para cada valor inteiro positivo lido, imprima o número e seus respectivos divisores. O algoritmo deverá repetir a operação até que o número digitado seja igual a zero.
Passo 1
O enunciado pede um algoritmo que leia valores inteiros positivos repetidamente e, para cada valor lido diferente de zero, imprima o número e todos os seus divisores. A execução só termina quando for lido o valor zero. Vamos usar conceitos de estruturas de repetição e teste de divisibilidade.
Passo 2
Para encontrar os divisores de um inteiro n, usamos o fato de que um número i é divisor de n se e somente se o resto da divisão de n por i for igual a zero, ou seja, n mod i = 0. Então fazemos um laço de i variando de 1 até n e testamos essa condição.
Passo 3
Precisamos de um laço externo que repita a leitura de n até que n seja igual a zero. Dentro desse laço, para cada n > 0, executamos outro laço para descobrir e imprimir todos os seus divisores.
Passo 4
No laço de descoberta de divisores, iniciamos i em 1 e vamos até i = n. A cada iteração, verificamos se n mod i = 0; se for, i é um divisor e deve ser impresso.
Passo 5
Após imprimir todos os divisores de um n, voltamos ao laço externo para ler o próximo valor. Quando o usuário digitar 0, o laço externo se encerra e o algoritmo termina.
Passo 6
Pronto! Com isso temos um algoritmo claro, baseado em laços de repetição e no teste de resto de divisão, que resolve o problema conforme solicitado.
Resposta
Algoritmo Divisores
Início
Enquanto verdadeiro faça
Escreva("Digite um inteiro positivo (0 para sair): ")
Leia(n)
Se n = 0 então
Pare
FimSe
Enquanto verdadeiro faça
Escreva("Digite um inteiro positivo (0 para sair): ")
Leia(n)
Se n = 0 então
Pare
FimSe
Escreva("Divisores de ", n, ": ")
Para i de 1 até n faça
Se n % i = 0 então
Escreva(i, " ")
FimSe
FimPara
Escreva("") // Quebra de linha
FimEnquanto
Fim