输入停不下来怎么办,没有报错

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

无穷尽的输入,不知道原因

问题相关代码,请勿粘贴截图

def divisor(r):
out = 1 # 最大约数初始化
while out == 1:
for i in range(2, r):
if r % i == 0:
r //= i
break
if i == r - 1:
out = r
return out

img

img

img

运行结果及报错内容

没有报错

我想要达到的结果

img

问题就出在divisor()函数里,只要输入的数里有1或者2的n次方,比如4、8、16、32等,out就会陷入死循环,尝试修改成这样:

def divisor(r):
    if r==1:return 1
    out = 1 # 最大约数初始化
    while out == 1:
        for i in range(2, r):
            if r % i == 0:
                #r //= i
                out = r//i
                break
            if i == r - 1:
                out = r
    return out

其实我觉得只要有整除就可以直接跳出while循环了,不知道你的思路如何?

最好把代码都发出来

代码用“插入代码块”贴文本内容,不要截个图

img