banovski

Maximum prime divisor (functional)

Dec 3rd, 2021 (edited)
545
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #! /usr/bin/env python3
  2.  
  3. # The script calculates maximum prime divisor of a positive integer.
  4. # Apart from input and output instructions the code's purely
  5. # functional (as far as I can judge). The script may exceed the
  6. # maximum recursion depth or make the interpreter freeze.
  7.  
  8. def divisorGenerator(a, b):
  9.     return divisibilityCheck(a, a // (a // b + 1))
  10.  
  11. def divisibilityCheck(a, b):
  12.     if a % b == 0:
  13.         return primeCheck(a, b)
  14.     else:
  15.         return limitCheck(a, b)
  16.  
  17. def limitCheck(a, b):
  18.     if b > 1:
  19.         return divisorGenerator(a, b)
  20.     else:
  21.         return b
  22.  
  23. def primeCheck(a, b):
  24.     if not [c for c in range(2, b // 2 + 1) if b % c == 0]:
  25.         return b
  26.     else:
  27.         return limitCheck(a, b)
  28.  
  29. def intializer(a):
  30.     return limitCheck(a, a // 2)
  31.  
  32. a = None
  33. while not a:
  34.     a = input("Enter a positive decimal integer to start evaluation or a non-number to exit: ")
  35.     if a.isnumeric():
  36.         try:
  37.             print(intializer(int(a)))
  38.         except:
  39.             print("Ouch! This one didn't go down well!")
  40.  
  41.         a = None
  42.     else:
  43.         exit("Oh, well...")
  44.  
RAW Paste Data