Python 2, 61 bytes
Wilson's theroem FTW!
f=lambda p,a=1,b=1:p==[]or b**(a%b*p[0])*f(p[a%b:],a*b*b,b+1)
Python 2, 62 bytes
f=lambda p,a=1,b=1:p==[]or(a%b<1or b**p.pop(0))*f(p,a*b*b,b+1)
dingledooper
- 23.4k
- 1
- 40
- 130