I dette eksemplet vil du lære å finne alle Armstrong-tall mellom to heltall som er angitt av brukeren.
For å forstå dette eksemplet, bør du ha kunnskap om følgende C-programmeringsemner:
- C if… else Erklæring
- C for Loop
Et positivt heltall kalles et Armstrong-tall (av rekkefølge n) hvis
abcd… = an + bn + cn + dn +
Når det gjelder et Armstrong-antall på 3 sifre, er summen av kuber av hvert siffer lik selve tallet. For eksempel er 153 et Armstrong-nummer fordi
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
Før du prøver dette programmet, må du lære å sjekke om et heltall er et Armstrong-nummer eller ikke.
Armstrong tall mellom to helheter
#include #include int main() ( int low, high, number, originalNumber, rem, count = 0; double result = 0.0; printf("Enter two numbers(intervals): "); scanf("%d %d", &low, &high); printf("Armstrong numbers between %d and %d are: ", low, high); // iterate number from (low + 1) to (high - 1) // In each iteration, check if number is Armstrong for (number = low + 1; number < high; ++number) ( originalNumber = number; // number of digits calculation while (originalNumber != 0) ( originalNumber /= 10; ++count; ) originalNumber = number; // result contains sum of nth power of individual digits while (originalNumber != 0) ( rem = originalNumber % 10; result += pow(rem, count); originalNumber /= 10; ) // check if number is equal to the sum of nth power of individual digits if ((int)result == number) ( printf("%d ", number); ) // resetting the values count = 0; result = 0; ) return 0; )
Produksjon
Skriv inn to tall (intervaller): 200 2000 Armstrong-tall mellom 200 og 2000 er: 370 371 407 1634
I programmet blir den ytre sløyfen iterert fra (lav + 1) til (høy - 1) . I hver iterasjon blir det sjekket om nummeret er et Armstrong-nummer eller ikke.
Inne i den ytre sløyfen beregnes antall sifre i et helt tall først og lagres i count
. Og summen av kraften til individuelle sifre lagres i resultatvariabelen.
Hvis tallet er lik result
, er tallet et Armstrong-tall.
Merk: Du må tilbakestille antall og resultat til 0 i hver iterasjon av den ytre sløyfen.