/*
Problem 92
A number chain is created by continuously adding the square of the digits
in a number to form a new number until it has been seen before.
For example,
44 -> 32 -> 13 -> 10 -> 1 -> 1
85 -> 89 -> 145 -> 42 -> 20 -> 4 -> 16 -> 37 -> 58 -> 89
Therefore any chain that arrives at 1 or 89 will become stuck in an endless
loop. What is most amazing is that EVERY starting number will eventually
arrive at 1 or 89.
How many starting numbers below ten million will arrive at 89?
*/
// compile with: gcc -O3 p092_slow.c -o p092_slow
// run with: time ./p092_slow
#include
#include
#define N 10000000
int square_digits(int x) {
char s[48];
sprintf(s, "%d", x);
int result = 0;
int slen = strlen(s);
int d;
for (int i=0; i