Concerning the context-sensitiveness:
If the length is not prime, it has some divisor $k$. This means that you can write the string as $$a^k\cdot a^k \cdots a^k.$$ Checking this can be done in a tedious but straight-forward way (for $k$ from 2 to (half) the string's length) without exceeding the space that the original string occupies. Thus the language is context-sensitive.