Selles näites õpitakse leidma kõik Armstrongi numbrid kahe kasutaja poolt sisestatud täisarvu vahel.
Selle näite mõistmiseks peaksid teil olema teadmised järgmistest C-programmeerimise teemadest:
- C kui … muidu avaldus
- C silmuse jaoks
Positiivset täisarvu nimetatakse Armstrongi arvuks (suurusjärgus n), kui
abcd… = an + bn + cn + dn +
Armstrongi 3-kohalise arvu korral võrdub iga numbri kuubikute summa number ise. Näiteks 153 on Armstrongi arv, sest
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
Enne selle programmi proovimist õppige, kuidas kontrollida, kas täisarv on Armstrongi number või mitte.
Armstrongi numbrid kahe täisarvu vahel
#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; )
Väljund
Sisestage kaks numbrit (intervallid): 200 2000 Armstrongi numbrit vahemikus 200 kuni 2000 on: 370 371 407 1634
Programmis itereeritakse välimine silmus väärtusest (madal + 1) väärtuseni (kõrge - 1) . Igas iteratsioonis kontrollitakse, kas number on Armstrongi number või mitte.
Välise silmuse sees arvutatakse kõigepealt täisarvu numbrite arv ja salvestatakse see count
. Ja üksikute numbrite võimsuse summa salvestatakse tulemuse muutujasse.
Kui arv on võrdne result
, on see arv Armstrongi arv.
Märkus. Peate lähtestama loenduse ja tulemuse nullini igas välise silmuse iteratsioonis.