Armstrong Sayısını Bulan C Programı

Bir tamsayının, bir Armstrong Sayısı olup olmadığını kontrol etmek için if .. else ve while döngüsünü kullanarak bir örnek hazırlayacağız.

Armstrong Sayısı nedir?

Örneğin : abcd… = an + bn + cn + dn + …

Örneğin : Armstrong sayısı 3 hane olması durumunda, her hanenin küplerinin toplamı, sayının kendisine eşittir.

153 = 1*1*1 + 5*5*5 + 3*3*3  // 153 bir Armstrong Sayısıdır

Örnek 1 : Armstrong Sayısı (3 Basamaklı)

#include <stdio.h>
int main()
{
    int number, originalNumber, remainder, result = 0;

    printf("Üç basamaklı bir tam sayı girin: ");
    scanf("%d", &number);

    originalNumber = number;

    while (originalNumber != 0)
    {
        remainder = originalNumber%10;
        result += remainder*remainder*remainder;
        originalNumber /= 10;
    }

    if(result == number)
        printf("%d Armstrong Sayısıdır.",number);
    else
        printf("%d Armstrong Sayısı değildir.",number);

    return 0;
}

Çıktısı :

Üç basamaklı bir tam sayı girin: 371
371 Armstrong Sayısıdır.

Örnek 2 : Armstrong Sayısı (n Basamaklı)


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

int main()
{
    int number, originalNumber, remainder, result = 0, n = 0 ;

    printf("Bir tamsayı girin: ");
    scanf("%d", &number);

     originalNumber = number;
    
    while (originalNumber != 0)
    {
        originalNumber /= 10;
        ++n;
    }

    originalNumber = number;

    while (originalNumber != 0)
    {
        remainder = originalNumber%10;
        result += pow(remainder, n);
        originalNumber /= 10;
    }

    if(result == number)
        printf("%d Armstrong Sayısıdır.", number);
    else
        printf("%d Armstrong Sayısı değildir.", number);

    return 0;
}

Çıktısı :

Bir tamsayı girin: 1634
1634 Armstrong Sayısıdır.