python中输入一个正整数,计算大于它且加上168后是一个完全平方数的最小数。不会做

问题遇到的现象和发生背景

从键盘输入一个正整数n,计算出大于n并且加上168后是一个完全平方数的最小数并输出。
【输入形式】
一个正整数
【输出形式】
大于输入的数并且加上168后是一个完全平方数的最小数
【样例输入】
1
【样例输出】
28

问题相关代码

n = int(input('请输入一个正整数'))
i = n + 1
while i:
j = 13
while j < (i + 168)/2:
if (i+168) == j**2:
print(i)
break
else:
j = j + 1
i = i+1

显示运行时间过长 不知道什么原因
希望能有一个改正意见和解答

帮你i改了一下,你参考看看吧:

n = int(input('请输入一个正整数'))
j = 13
while True:
    if j**2<(n+1+168):
        j += 1
        continue
    else:
        break
num = j**2-168
print((num))

如有帮助请采纳!

必然啊!!时间复杂度O(N2),输入一个数,一个循环就可,第一个while你看看可以省略的

while i: 死循环了


n = int(input('请输入一个正整数'))
i = n + 1
while i:
    j = i + 168    
    if int(j ** (1 / 2)) **2 == j :
        print(i)
        break
    i = i+1