Помогите с задачей, пожалуйста. Диофантово уравнение на PYTHON
Прохожу курс программирования на Python, совершенно не понимаю этот цикл for. Помогите, пожалуйста, с решением и пояснениями.
Диофантово уравнение на Python.
Даны числа a, b, c, d. Выведите в порядке возрастания все целые числа от 0 до 1000
1000 включительно, которые являются корнями уравнения 𝑎⋅𝑥3+𝑏⋅𝑥2+𝑐⋅𝑥+𝑑=0
Входные данные
Вводятся целые числа a, b, c, d. Все числа не превосходят по модулю 30000.
Выходные данные
Выведите ответ на задачу. Если в указанном промежутке нет корней уравнения, то ничего выводить не нужно.

По дате
По Рейтингу
Процедурный вариант:
123
a, b, c, d = int(input()), int(input()), int(input()), int(input())
for x in range(0, 1000+1):
if ((a*x+b)*x+c)*x+d == 0: print(x)
Функциональный вариант:
12
a, b, c, d = map(int, [input() for _ in range(4)])
print(*(x for x in range(0, 1000+1) if ((a*x+b)*x+c)*x+d == 0))