# [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