Dado um número n inteiro e positivo, dizemos que n é perfeito se n for igual à soma de seus divisores positivos diferentes de n. Construa um programa em C que verifica se um dado número é perfeito. Exemplo: 6 é perfeito, pois .
Passo 1
Vamos iniciar o desenvolvimento do programa definindo o seu escopo.
Passo 2
Agora vamos para a etapa de declaração e inicialização de variáveis.
Informações sobre as variáveis:
- n é uma variável que será responsável por armazenar o número inserido como entrada do programa;
- i é uma variável contadora;
- somaDivisores é uma variável que armazenará a soma de todos os divisores do número n inserido;
- marcador é uma variável booleana representativa que informará se o número n inserido é ou não perfeito.
Passo 3
Tendo em mãos as variáveis do programa, nós podemos requisitar a entrada do programa ao usuário.
Essa entrada nada mais é que o número n.
Passo 4
Após a instrução de leitura do número n que será inserido, nós podemos definir uma estrutura de repetição for para verificar a igualdade da soma dos divisores de n.
Vamos começar definindo os parâmetros da estrutura for. A variável contadora i deve ser inicializada com o valor 1, pois ela terá o papel de contar os divisores e divisões por 0 são indeterminadas. A condição de execução desse laço de repetição deve ser i menor que n. Além disso, a regra de incremento da variável contadora i deve ser de uma unidade por loop.
Basicamente, ao definirmos esses parâmetros estamos criando uma estrutura de repetição que começará em 1 e, com somas de 1 unidade por loop, irá repetir instruções até que esse valor seja igual a n – 1.
Em relação as instruções dentro do laço de repetição, temos um condicional que verificará se a divisão de n pelo número de i sendo processado é igual a 0 (verificação de divisor). Caso seja, a variável somaDivisores deve ser incrementada com o valor de i e uma nova verificação deve ser feita: se somaDivisores é igual a n. Caso verdadeiro marcador deve ser atribuída com 1 e break deve ser utilizado para encerrar os loops, pois o número é perfeito.
Passo 5
Por fim, basta verificarmos o valor armazenado na variável marcador para sabermos se o número é ou não perfeito.
Caso seja igual a 1, devemos imprimir que o número é perfeito. Caso contrário, se marcador ainda possuir o seu valor de inicialização (0), devemos imprimir que o número não é perfeito.
Resposta
Ei, a resposta está no passo a passo :)