fork download
  1. def revfac(f):
  2. """
  3. Takes a number (f) and returns the reverse factorial, if it has one.
  4. Returns reverse factorial, or None.
  5. """
  6. assert type(f) is int, "TypeError: f is not an integer."
  7. assert f >= 0
  8. if f == 0:
  9. return 1
  10. d = 1 # denominator
  11. r = f % d # remainder
  12. while r == 0:
  13. if f == d:
  14. return d
  15. f /= d # Update numerator
  16. d += 1 # Increase denominator
  17. r = f % d # Update remainder
  18. return None # Unnecessarily explicit return
  19.  
  20.  
  21. i = [120, 150, 3628800, 479001600, 6, 18]
  22.  
  23. for n in i:
  24. if revfac(n) is None:
  25. print (str(n) + " NONE")
  26. else:
  27. print (str(n) + ' = ' + str(revfac(n)) + '!')
Success #stdin #stdout 0.01s 9992KB
stdin
Standard input is empty
stdout
120 = 5!
150   NONE
3628800 = 10!
479001600 = 12!
6 = 3!
18   NONE