问题描述
有一个函数,它找到第一个奇数除数然后返回'YES'或返回'NO':
def find_del(a: int) -> str:
"""return 'YES' if number have odd divisor else 'NO'."""
if a % 2 != 0:
return 'YES'
else:
x = 'NO'
for j in range(3,a):
if (a % j == 0 and j % 2 != 0) or (a / j == 0):
x = 'YES'
break
return x
但是这个功能对于号码 1099511627776 的运行速度并不快。
如何更改功能使其工作?
解决方法
感谢 'molbdnilo' 的提示,我改变了我的程序:
def find_del(a: int) -> str:
"""return Yes if number have odd divisor else No"""
while a % 2 == 0:
a = a // 2
return 'YES' if a != 1 else 'NO'
现在它甚至适用于像 1099511627776 这样的大数字。