##Seriously, 25 bytes
Seriously, 25 bytes
,r`PªD;⌐k`M┬`π`Mi│g;)@\)\
Outputs a\nb
(\n
is a newline). Large inputs will take a long time (and might fail due to running out of memory) because prime generation is pretty slow.
Explanation:
,r`PªD;⌐k`M┬`π`Mi│g;)@\)\
,r push range(input)
`PªD;⌐k`M map:
P k'th prime
ª square
D decrement
; dupe
⌐ add 2 (results in P_k + 1)
k push to list
┬ transpose
`π`M map product
i│ flatten, duplicate stack
g;) push two copies of gcd, move one to bottom of stack
@\ reduce denominator
)\ reduce numerator