Это потому, что это Python.
В Python синтаксис range(x, y)
генерирует последовательность
x, x+1, x+2, ..., y-2, y-1
Так что, если вы хотите, чтобы значение было включено в диапазон, второеПараметр должен быть больше, чем значение (не равно), и поэтому вы должны использовать math.floor(...) + 1
и не можете пропустить часть +1
.В противном случае, когда я являюсь квадратом простого числа, j не будет проходить итерацию по этому простому числу, вызывая ошибку, с которой вы столкнулись.