Páginas de un libro

Supón que sumas todos los números de página de un libro. Si el total es 21, el libro puede tener 6 páginas porque 1 + 2 + 3 + 4 + 5 + 6 = 21. Un total de 25 es imposible porque el siguiente total es 28 (21 + 7).

Dado total, devuelve true si puede ser igual a la suma 1 + 2 + ... + n para algún número entero de páginas; de lo contrario, devuelve false.

¿Puedes idear una solución más eficiente que sumar números enteros consecutivos uno por uno?

Ejemplos

pages_in_book(5); // false

pages_in_book(4005); // true

pages_in_book(9453); // true