def cuberoot(x): sqr = int(x ** 0.5) return rootiter(x, sqr) def rootiter(x, pre): cur = pre - float(pre ** 3 - x) / (3 * pre ** 2) if abs(cur - pre) <= 0.001: return int(cur) else: return rootiter(x, cur) def breaknum(x): out = [] while x != 0: out.append(str(x % 10)) x /= 10 return out def main(): dic = {} i = 1 while 1: tmplis = breaknum(i ** 3) tmplis.sort() tmp = ''.join(tmplis) if dic.has_key(tmp): dic.get(tmp).append(i) if len(dic.get(tmp)) == 5: return dic.get(tmp) else: dic.update({tmp:[i]}) i += 1 xx = main() print xx for i in xx: print i ** 3