fork download
  1. g=lambda k:1/k|any(abs(round(5**.5*i)**2-5*i*i)==4>k%i<g(k/i)for i in range(k+1))
  2. f=lambda n,k=1:n and f(n-g(k),k+1)or~-k
  3.  
  4. for n in range(1, 21) + [100]:
  5. print '%3d: %3d' % (n, f(n))
Success #stdin #stdout 0.31s 9008KB
stdin
Standard input is empty
stdout
  1:   1
  2:   2
  3:   3
  4:   4
  5:   5
  6:   6
  7:   8
  8:   9
  9:  10
 10:  12
 11:  13
 12:  15
 13:  16
 14:  18
 15:  20
 16:  21
 17:  24
 18:  25
 19:  26
 20:  27
100: 315