Я думаю, вы должны сначала переписать алгоритм.
1) Начните итерацию с sqrt(number)
, а не с числа, вплоть до 1, обработайте i
как корень (то есть возведите его в квадрат). Это должно быть намного быстрее.
2) Чтобы проверить, что необходим символ +
, лучше иметь флаг bool, который обозначает, что что-то уже записано в вывод, и записать +
до квадратное число на основе этого флага.
Мне кажется, проблема вашего алгоритма в том, что вы проверяете каждый квадрат не более одного раза, тогда как он может появляться более одного раза.