Munchausen numbers

From Rosetta Code
Revision as of 12:40, 22 September 2016 by rosettacode>Aloisdg (Init entry with C code)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Munchausen numbers is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.


Definition of Munchausen numbers

A Munchausen number is a natural number n the sum of whose digits (in base 10), each raised to the power of itself, is n itself.

Task requirements

Finds all Munchausen numbers between 1 and 5000

C

Adapted from Zack Denton's code posted on Munchausen Numbers and How to Find Them. <lang C>#include <stdio.h>

  1. include <math.h>

int main() {

   for (int i = 1; i < 5000; i++) {
       // loop through each digit in i
       // e.g. for 1000 we get 0, 0, 0, 1.
       int sum = 0;
       for (int number = i; number > 0; number /= 10) {
           int digit = number % 10;
           // find the sum of the digits 
           // raised to themselves 
           sum += pow(digit, digit);
       }
       if (sum == i) {
           // the sum is equal to the number
           // itself; thus it is a 
           // munchausen number
           printf("%i\n", i);
       } 
   }
   return 0;

}</lang>

Output:
1
3435