Verifique se BigInteger não é um quadrado perfeito

Eu tenho um valor BigInteger, digamos que é 282 e está dentro da variável x. Agora eu quero escrever um loop while que declare:

while b2 isn't a perfect square:
    a ← a + 1
    b2 ← a*a - N
endwhile

Como eu faria uma coisa dessas usando o BigInteger?

EDITAR: O objetivo disso é que eu possa escrevereste método. Como o artigo indica, é preciso verificar se b2 não é quadrado.

questionAnswers(4)

yourAnswerToTheQuestion