Problem 34
145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145.
Find the sum of all numbers which are equal to the sum of the factorial of their digits.
Note: as 1! = 1 and 2! = 2 are not sums they are not included.
C++:
#include <iostream> using namespace std; const int MAX = 2540160; const int N = 10; long factorials[N] = {1, 1}; int main() { for(int i=2; i<N; i++) factorials[i] = factorials[i - 1] * i; cout << "9! = " << factorials[9] << endl; cout << "7 * 9! = " << 7 * factorials[9] << endl; cout << "8 * 9! = " << 8 * factorials[9] << endl; long total = 0; for(long i=3; i<=MAX; i++) { long t = i, sum; sum = 0; while(t) { sum += factorials[t % 10]; t /= 10; } if(sum == i) total += i; } cout << total << endl; return 0; }