Introdução
Neste laboratório, você aprenderá a escrever um programa em C para verificar se um número dado é perfeito. O programa lerá uma entrada inteira do usuário, calculará a soma de seus divisores próprios e, em seguida, determinará se o número é perfeito ou não. O laboratório abrange conceitos fundamentais em teoria dos números e matemática discreta, fornecendo uma aplicação prática desses princípios na programação em C.
O programa primeiro solicita ao usuário que digite um inteiro positivo, em seguida, calcula a soma dos divisores próprios do número (ou seja, todos os inteiros positivos menores que o número que dividem o número exatamente). Finalmente, o programa compara a soma dos divisores próprios ao número original e imprime o resultado, indicando se o número é perfeito ou não.
Ler um Inteiro
Neste passo, você aprenderá como ler uma entrada de inteiro em C para verificar números perfeitos. Criaremos um programa em C que permite aos usuários inserir um número a ser analisado.
Primeiro, crie um novo arquivo C no diretório do projeto:
cd ~/project
nano perfect_number.c
Agora, adicione o seguinte código ao arquivo:
#include <stdio.h>
int main() {
int number;
// Solicitar ao usuário a entrada
printf("Digite um inteiro positivo para verificar se é um número perfeito: ");
scanf("%d", &number);
// Imprimir o número inserido para verificar a entrada
printf("Você digitou: %d\n", number);
return 0;
}
Exemplo de saída:
Digite um inteiro positivo para verificar se é um número perfeito: 28
Você digitou: 28
Vamos analisar o código:
#include <stdio.h>inclui a biblioteca de entrada/saída padrãoscanf("%d", &number)lê uma entrada de inteiro do usuárioprintf()é usado para solicitar a entrada e exibir o número inserido.
Compile e execute o programa:
gcc perfect_number.c -o perfect_number
./perfect_number
Somar Divisores Próprios e Comparar com o Número
Neste passo, você modificará o programa C anterior para calcular a soma dos divisores próprios e determinar se o número é perfeito.
Abra o arquivo existente e atualize o código:
nano ~/project/perfect_number.c
Substitua o código anterior por:
#include <stdio.h>
int main() {
int number, sum = 0;
// Solicitar ao usuário a entrada
printf("Digite um inteiro positivo para verificar se é um número perfeito: ");
scanf("%d", &number);
// Calcular a soma dos divisores próprios
for (int i = 1; i < number; i++) {
if (number % i == 0) {
sum += i;
}
}
// Verificar se o número é perfeito
if (sum == number) {
printf("%d é um número perfeito!\n", number);
} else {
printf("%d não é um número perfeito.\n", number);
}
return 0;
}
Compile e execute o programa:
gcc perfect_number.c -o perfect_number
./perfect_number
Exemplo de saída para um número perfeito:
Digite um inteiro positivo para verificar se é um número perfeito: 28
28 é um número perfeito!
Exemplo de saída para um número não perfeito:
Digite um inteiro positivo para verificar se é um número perfeito: 12
12 não é um número perfeito.
Conceitos-chave explicados:
- O loop
foritera pelos números de 1 anumber - 1 number % i == 0verifica seié um divisor do númerosum += iadiciona todos os divisores próprios- Um número perfeito é um inteiro positivo igual à soma de seus divisores próprios
Imprimir Resultado
Neste passo final, você aprimorará o programa para fornecer uma saída mais detalhada sobre o número perfeito, incluindo seus divisores e a soma.
Abra o arquivo e atualize o código:
nano ~/project/perfect_number.c
Substitua o código anterior por:
#include <stdio.h>
int main() {
int number, sum = 0;
// Solicitar ao usuário a entrada
printf("Digite um inteiro positivo para verificar se é um número perfeito: ");
scanf("%d", &number);
// Imprimir cabeçalho para os divisores
printf("Divisores próprios de %d: ", number);
// Calcular a soma dos divisores próprios e imprimi-los
for (int i = 1; i < number; i++) {
if (number % i == 0) {
printf("%d ", i);
sum += i;
}
}
// Imprimir o resultado detalhado
printf("\n\nSoma dos divisores próprios: %d", sum);
// Verificar e imprimir o status do número perfeito
if (sum == number) {
printf("\n%d é um NÚMERO PERFEITO!\n", number);
} else {
printf("\n%d não é um número perfeito.\n", number);
}
return 0;
}
Compile e execute o programa:
gcc perfect_number.c -o perfect_number
./perfect_number
Exemplo de saída para um número perfeito (28):
Digite um inteiro positivo para verificar se é um número perfeito: 28
Divisores próprios de 28: 1 2 4 7 14
Soma dos divisores próprios: 28
28 é um NÚMERO PERFEITO!
Exemplo de saída para um número não perfeito (12):
Digite um inteiro positivo para verificar se é um número perfeito: 12
Divisores próprios de 12: 1 2 3 4 6
Soma dos divisores próprios: 16
12 não é um número perfeito.
Melhorias-chave:
- Agora imprime todos os divisores próprios.
- Mostra a soma dos divisores próprios.
- Fornece uma saída formatada e clara.
- Mantém a lógica central de detecção de números perfeitos.
Resumo
Neste laboratório, você aprenderá como ler uma entrada de inteiro em C e determinar se um número é perfeito. Primeiro, você criará um programa em C que solicitará ao usuário que digite um inteiro positivo. Em seguida, calculará a soma dos divisores próprios do número e a comparará com o número original para verificar se é um número perfeito. Finalmente, imprimirá o resultado no console.
Os pontos principais de aprendizado deste laboratório são: ler entrada de inteiro usando scanf(), calcular a soma dos divisores próprios usando um loop for e comparar a soma com o número original para determinar se é um número perfeito.



