从键盘输入一个正整数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