Как уже объяснили другие, + 1
заставляет цикл повторяться слишком часто.Затем доступ summation[i * i]
или summation[i * j]
выходит за пределы выделенного размера summation
.Решение состоит в том, чтобы либо соответствующим образом увеличить выделенный размер, либо убедиться, что условие корректно (не выполняется + 1
), и, таким образом, вы не запускаете конец массива.
Но также, как и другие, ужеСказал, что вы не должны использовать значение с плавающей запятой (результат sqrt
) с целочисленным сравнением, так как значения с плавающей запятой ... сложно.Я не уверен, будет ли в этом случае int приведен к плавающей или наоборот, но в любом случае это не правильно.