Encontrando Números de Armstrong em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos sobre números de Armstrong e escreveremos um programa em C para verificar se um número é ou não um número de Armstrong. Um número de Armstrong é um número que é a soma de seus próprios dígitos, cada um elevado à potência do número de dígitos.

Por exemplo,

153 é um número de Armstrong, porque 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27.
371 é um número de Armstrong, porque 371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1.

Criar um novo arquivo C

Primeiro, precisamos criar um novo arquivo C no diretório ~/project/, vamos chamá-lo de main.c.

touch ~/project/main.c

Encontrando números de Armstrong entre 1 e 500

Vamos escrever um programa em C para encontrar números de Armstrong entre 1 e 500.

#include <stdio.h>
#include <math.h>

int main() {
    printf("\nOs números de Armstrong entre 1 e 500 são: \n");

    for (int i = 1; i <= 500; i++) {
        int t = i, sum = 0;
        while (t != 0) {
            int digit = t % 10;
            sum += pow(digit, 3);
            t /= 10;
        }
        if (sum == i) {
            printf("%d ", i);
        }
    }

    return 0;
}

Verificando se um número é um número de Armstrong

Agora, vamos escrever um programa em C para verificar se um número é ou não um número de Armstrong.

#include <stdio.h>
#include <math.h>

int main() {
    int n, sum = 0;
    printf("Digite um número: ");
    scanf("%d", &n);

    int temp = n;
    while (temp != 0) {
        int digit = temp % 10;
        sum += pow(digit, 3);
        temp /= 10;
    }

    if (sum == n) {
        printf("%d é um número de Armstrong.\n", n);
    } else {
        printf("%d não é um número de Armstrong.\n", n);
    }

    return 0;
}

Juntando tudo

Vamos juntar ambos os programas no nosso arquivo main.c.

#include <stdio.h>
#include <math.h>

int main() {
    // Armstrong numbers between 1 to 500
    printf("Os números de Armstrong entre 1 e 500 são: \n");

    for (int i = 1; i <= 500; i++) {
        int t = i, sum = 0;
        while (t != 0) {
            int digit = t % 10;
            sum += pow(digit, 3);
            t /= 10;
        }
        if (sum == i) {
            printf("%d ", i);
        }
    }

    printf("\n");

    // Checking if a number is Armstrong number
    int n, sum = 0;
    printf("Digite um número: ");
    scanf("%d", &n);

    int temp = n;
    while (temp != 0) {
        int digit = temp % 10;
        sum += pow(digit, 3);
        temp /= 10;
    }

    if (sum == n) {
        printf("%d é um número de Armstrong.\n", n);
    } else {
        printf("%d não é um número de Armstrong.\n", n);
    }

    return 0;
}

Resumo

Neste laboratório, aprendemos sobre números de Armstrong e como encontrá-los em um determinado intervalo, e como verificar se um número é ou não um número de Armstrong. Esperamos que você tenha gostado deste laboratório e que ele tenha ajudado você a aprender mais sobre programação em C.