You got nice answers already, so I'll just address the "sustainability" issue.
The formula you're discussing uses a real (non-integer) arithmetic to compute the integer solution of an integer problem. Theoretically, it is possible that at some point the square root is computed with a minor error and that the obtained solution is wrong (it may depend on processor, as well as some other factors).
To be absolutely certain that your program gives a correct solution (of course, as long as $n$ in the range of integers), you'll have to stick to the integer arithmetic. However, this means computing (but not remembering) the elements of your sequence, up to the $n$-th one. I don't think there is an integer-arithmetic formula that would save you from this.
A drawback? The speed, obviously, as such algorithm performs in $O(n)$ time, while the formula above computes in the constant time. This is significant, since the error should not occur for any reasonably small $n$.
All in all, I'd go with the above formula, as I'm fairly certain that this would not happen, since the square root would not allow lose $1$ as the significant digit, and I see no other threats, assuming that the processor is not buggy (i.e., it doesn't compute $\sqrt{x}$ to have a smaller integer part than the actual $\sqrt{x}$).
If it's absolutely crucial to get correct results for really large $n$, you might want to do some error estimate and see if the formula can actually produce wrong results. Again, I'm fairly certain that it can not.