In dit voorbeeld leert u alle Armstrong-getallen te vinden tussen twee gehele getallen die door de gebruiker zijn ingevoerd.
Om dit voorbeeld te begrijpen, moet u kennis hebben van de volgende C-programmeeronderwerpen:
- C if… else Statement
- C voor Loop
Een positief geheel getal wordt een Armstrong-getal (van orde n) genoemd als
abcd… = an + bn + cn + dn +
In het geval van een Armstrong-nummer van 3 cijfers, is de som van de kubussen van elk cijfer gelijk aan het nummer zelf. 153 is bijvoorbeeld een Armstrong-nummer omdat
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
Voordat u dit programma uitprobeert, moet u weten hoe u kunt controleren of een geheel getal een Armstrong-getal is of niet.
Armstrong-nummers tussen twee gehele getallen
#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; )
Uitvoer
Voer twee getallen (intervallen) in: 200 2000 Armstrong-getallen tussen 200 en 2000 zijn: 370371407 1634
In het programma wordt de buitenste lus herhaald van (laag + 1) tot (hoog - 1) . Bij elke iteratie wordt gecontroleerd of het nummer een Armstrong-nummer is of niet.
Binnen de buitenste lus wordt het aantal cijfers van een geheel getal eerst berekend en opgeslagen in count
. En de som van de macht van individuele cijfers wordt opgeslagen in de resultaatvariabele.
Als nummer gelijk is aan result
, is het nummer een Armstrong-nummer.
Opmerking: u moet het aantal en het resultaat opnieuw instellen op 0 in elke iteratie van de buitenste lus.