筛选法求素数的代码错误

为什么结果会有15,25这些。感觉只历遍到3
n=int(input('请输入一个大于2的自然数:'))
prime = [2]
for n in range(2,n+1):
for j in range(2,n+1):
if n%j == 0:
break
else:
prime.append(n)
break
print(prime)

结果:
请输入一个大于2的自然数:57
[2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57]

n = int(input('请输入一个大于2的自然数:'))
prime = [2]
for i in range(3, n + 1):
    flag = True
    for j in range(2, i):
        if i % j == 0:
            flag = False
    if flag:
        prime.append(i)
print(prime)

for n in range(2,n+1): 有问题啊。循环变量怎么能用输入的整数变量呢?
换一个循环变量,别用n