# [Python 2], 68 bytes The output is a positive integer for truthy cases and a `0` otherwise. <!-- language-all: lang-python --> f=lambda n,b,p=2,m=1:b/m*(n<2or f(*[n/p,n,b,b,p,p+1,m*p][n%p>0::2])) [Try it online!][TIO-kmx55v7a] [Python 2]: https://docs.python.org/2/ [TIO-kmx55v7a]: https://tio.run/##RY3NCoMwEITvPsUgBBK7RY1/INUXEQ@KlQoaQ8ylT28TKS0sy7ezszv6bV@7kuc5N@uwjdMARSPpRtLWpPUYbxFXD7kbzDzqVKzJr52B9C2lLdJ9p5huk7qWvRCnfR72QAOeEaQg8DQhVBdIJ@XJH1OPZf71ech@VBaeKumOCxEEs4tXhBGLwpVQB4BxMTP3snCTNouyCNlEYBPure@cTSIEw2Vyte8rN@6xEecH "Python 2 – Try It Online" **Commented:** f=lambda n,b,p=2,m=1: # recursive function taking 4 arguments # n, b - inputs from the challenge # p=2 - candidate for a prime dividing n # m=1 - a power of p dividing the original input n b/m*( ... ) # floor division, this is 0 if m>b n<2or ... # if n==1, return True (1), else: f(*[ ... ][1::2]) # if n%p>0 (p does not divide n): == f(n,b,p+1) # try next p f(*[ ... ][0::2]) # if n%p==0 (p divides n): == f(n/p,b,p,m*p) # divide n by p, update power of p, m