Tüm basamaklarındaki rakamların sayı değerlerinin küpleri toplamı, kendisine eşit olan sayılara "Armstrong sayı" denir. Diğer bir deyişle her bir basamağın o sayının basamak sayısı kadar üssü alınarak toplanmasıdır. Eğer toplam bu sayıyı veriyorsa o sayı Armstrong Sayıdır.
Bazı Armstrong sayılar : 0, 1, 2, 3, 153, 370, 407, 1634, 8208
153 = 13 + 53 + 33
1634 = 14 + 64 + 34 + 44
Mantık : abcd… = an + bn + cn + dn + …
Örnek : 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.
Bir tamsayının, bir Armstrong Sayısı olup olmadığını kontrol etmek için if .. else ve while döngüsü ile hazırlanan çalışma aşağıdadır.
Kaynak Kodu :
Kod: Tümünü seç
#include <stdio.h>
#include <math.h>
int main()
{
int number, originalNumber, remainder, result = 0, n = 0 ;
printf("Bir tamsayi giriniz: ");
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 Sayisidir.", number);
else
printf("%d Armstrong Sayisi degildir.", number);
return 0;
}