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."