SageMath, 91 87 bytes
a=lambda n:int(is_prime(n))or sum(a(d)*a(n//d)for d in range(2,n) if n%d==0 and d*d<=n)
Python apart from the function 'is_prime'.
Shortened with Neil's advice.
Albert.Lang's hint removes 'is_prime':
Python, 74 bytes
a=lambda n:max(1,sum(a(d)*a(n//d)for d in range(2,n)if d*d<=n and n%d==0))