Tässä esimerkissä opit etsimään kaikki Armstrong-numerot kahden käyttäjän kirjoittaman kokonaisluvun väliltä.
Tämän esimerkin ymmärtämiseksi sinulla on oltava tieto seuraavista C-ohjelmointiaiheista:
- C jos… muuta lausunto
- C silmukalle
Positiivista kokonaislukua kutsutaan Armstrong-luvuksi (järjestys n), jos
abcd… = an + bn + cn + dn +
Armstrongin 3-numeroisen lukumäärän tapauksessa jokaisen numeron kuutioiden summa on yhtä suuri kuin itse numero. Esimerkiksi 153 on Armstrong-luku, koska
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
Ennen kuin yrität tätä ohjelmaa, opi tarkistamaan, onko kokonaisluku Armstrong-luku vai ei.
Armstrongin numerot kahden kokonaisluvun välillä
#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; )
Tuotos
Syötä kaksi numeroa (väli): 200 2000 Armstrong-numeroa välillä 200 ja 2000 ovat: 370371407 1634
Ohjelmassa ulompi silmukka iteroidaan arvosta (matala + 1) arvoon (korkea - 1) . Jokaisessa iteraatiossa tarkistetaan, onko numero Armstrong-luku vai ei.
Ulkosilmukan sisällä kokonaisluvun numeroiden määrä lasketaan ensin ja tallennetaan count
. Ja yksittäisten numeroiden tehon summa tallennetaan tulosmuuttujaan.
Jos luku on yhtä suuri result
, luku on Armstrongin luku.
Huomaa: Sinun on palautettava laskenta ja tulos nollaksi jokaisessa ulomman silmukan iteroinnissa.