$\text{Number of Cache Lines}= \dfrac{2^{15}B}{128B}= 256$
$\text{In 1 Cache Line} =\dfrac{128B}{8B} = 16\ elements$
$P_1=\dfrac{\text{total elements in array}}{\text{elements in a cache line}}$
$\quad=\dfrac{512 \times 512}{16}= 2^{14}= 16384.$
$P_2= 512 \times 512=2^{18}$
$\dfrac{P_1}{P_2}=\dfrac{16384}{512 \times 512}$
$\quad = 2^{14-18}= 2^{-4}=\dfrac{1}{16}$
It is so, because for $P_1$ for every line there is a miss, and once a miss is processed we get $16$ elements in memory.
So, another miss happens after $16$ elements.
For $P_2$ for every element there is a miss because storage is row major order(by default) and we are accessing column wise.
Hence, answer is option B.