Páginas de um livro

Suponha que você some todos os números das páginas de um livro. Se o total for 21, o livro pode ter 6 páginas porque 1 + 2 + 3 + 4 + 5 + 6 = 21. Um total de 25 é impossível porque o próximo total é 28 (21 + 7).

Dado total, retorne true se esse valor puder ser igual à soma 1 + 2 + ... + n para algum número inteiro de páginas; caso contrário, retorne false.

Você consegue elaborar uma solução mais eficiente do que somar números inteiros consecutivos um de cada vez?

Exemplos

pages_in_book(5); // false

pages_in_book(4005); // true

pages_in_book(9453); // true