Šiame pavyzdyje sužinosite, kaip surasti visus Armstrongo skaičius tarp dviejų sveikojo skaičiaus, kuriuos įvedė vartotojas.
Norėdami suprasti šį pavyzdį, turėtumėte žinoti šias C programavimo temas:
- C jei … dar pareiškimas
- C kilpai
Teigiamas sveikasis skaičius vadinamas Armstrongo skaičiumi (n eilės), jei
abcd… = an + bn + cn + dn +
Jei „Armstrong“ yra 3 skaitmenys, kiekvieno skaitmens kubelių suma lygi pačiam skaičiui. Pavyzdžiui, 153 yra Armstrongo skaičius, nes
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
Prieš išbandydami šią programą, sužinokite, kaip patikrinti, ar sveikasis skaičius yra „Armstrong“ skaičius, ar ne.
Armstrongas Skaičiai tarp dviejų sveikųjų skaičių
#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; )
Rezultatas
Įveskite du skaičius (intervalus): 200 2000 „Armstrong“ skaičiai tarp 200 ir 2000 yra: 370 371 407 1634
Programoje išorinė kilpa kartojama nuo (žemas + 1) iki (aukštas - 1) . Kiekvienoje iteracijoje tikrinama, ar skaičius yra „Armstrong“ skaičius, ar ne.
Išorinės kilpos viduje pirmiausia apskaičiuojamas sveiko skaičiaus skaitmenų skaičius ir jis saugomas count
. Atskirų skaitmenų galios suma yra saugoma rezultato kintamajame.
Jei skaičius yra lygus result
, skaičius yra Armstrongo skaičius.
Pastaba: kiekvienoje išorinės kilpos iteracijoje turite iš naujo nustatyti skaičių ir rezultatą 0.