fork download
  1. f=lambda n,k=4,m=6,p=[3,2]:1/n or n%p[1]and f(n,k+1,m*k,m*m%k*[k]+p)or p[len(p)*2%4]*f(n/p[1])
  2.  
  3. import sys
  4. sys.setrecursionlimit(10000)
  5.  
  6. for n in (1, 2, 3, 10, 37, 360, 12345, 67895678):
  7. print '%8d -> %9d' % (n, f(n))
Success #stdin #stdout 2.05s 10104KB
stdin
67895678
stdout
       1 ->         1
       2 ->         3
       3 ->         2
      10 ->        21
      37 ->        31
     360 ->       756
   12345 ->     11578
67895678 -> 125630871