Below is the solution to Project Euler problem 92. Its written in python and takes about 10 minutes to reach the solution depending on your hardware. There are some comments in the code to know what the program is doing.
#!/usr/bin/env python number_89 = 0 for z in range(10000000, 1, -1): def chain(z): var = z chaindigit = 0 while (chaindigit != 1 or chaindigit != 89): # Transform the number into a string list = [int(i) for i in str(var)] # Multiply each list member chain = [x * y for x, y in zip(list, list)] # Add the remaining list members chaindigit = sum(chain) var = chaindigit # Check whether it ends in 89 or 1 if (chaindigit == 1 or chaindigit == 89): # If it ends in 89 increment the value of number_89 if (chaindigit == 89): global number_89 number_89 = number_89 + 1 break chain(z) print "There are", number_89,"chain numbers that end in 89."