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
Bazı Armstrong sayıları: 0, 1, 2, 3, 153, 370, 407, 1634, 8208
153 = 13 + 53 + 33
#include <stdio.h>
int pw(int, int);
int main()
{
int s, sonuc = 0, gecici, bdeger, basamak = 0;
printf("LUTFEN BIR SAYI GIRINIZ\n");
scanf("%d", &s);
gecici = s;
while (gecici != 0) {
basamak++;
gecici = gecici/10;
}
gecici = s;
while (gecici != 0) {
bdeger = gecici%10;
sonuc = sonuc + pw(bdeger, basamak);
gecici = gecici/10;
}
if (s == sonuc)
printf("%d ARMSTRONG SAYIDIR.\n", s);
else
printf("%d ARMSTRONG SAYI DEGILDIR.\n", s);
return 0;
}
int pw(int s, int r) {
int c, p = 1;
for (c = 1; c <= r; c++)
p = p*s;
return p;
BENDE BÖYLE DÜŞÜNDÜM:
YanıtlaSil#include
#include
//Bazı Armstrong sayıları: 0, 1, 2, 3, 153, 370, 407, 1634, 8208
//153 = 1^3 + 5^3 + 3^3
//1634 = 1^4 + 6^4 + 3^4 + 4^4
int basamakSayisi(int sayi){
int i;
for(i=0;i<10000;i++){
if(sayi/pow(10,i)<=9){
return i+1;
}}}
int main(){
int sayi,r,p,i,toplam=0,yeni_sayi;
printf("Sayiyi giriniz: ");
scanf("%d",&sayi);
r = basamakSayisi(sayi);
yeni_sayi = sayi;
for(i=r;1<=i;i--){
p = pow(10,i-1);
toplam += pow(yeni_sayi/p,r);
yeni_sayi = yeni_sayi%p;
printf("%d\n",toplam);
}
if (toplam == sayi){
printf("Bu Armstrong sayisidir.");
}
else{
printf("Bu Armstrong sayisi degildir.");
}
return 0;
}