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

[Try it online!](http://seriously.tryitonline.net/#code=LHJgUMKqRDvijJBrYE3ilKxgz4BgTWnilIJnOylAXClc&input=Mw)

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