#!/usr/bin/env python
#-*- coding:utf-8 -*-
import math
import operator
"""Project Euler Problem 159"""
def factorizations(n):
answer = []
def sub(n, factor=2, factors=[]):
for x in range(factor, int(math.sqrt(n))+1):
if n % x == 0:
sub(n/x, x, factors + [x])
answer.append(factors + [n])
sub(n)
return answer
def drs(l):
def sub(n):
return n if n < 10 else sub(reduce(operator.add, map(int, str(n))))
return reduce(operator.add, map(sub, l))
def solve():
answer = 0
for i in range(2, 1000000):
m = max(map(drs, factorizations(i)))
answer += m
print 'Answer: ', answer
def test(n):
l = factorizations(n)
for x in l:
print x, drs(x)
if __name__ == '__main__':
solve()
Project Euler P.159
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기