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.