📅  最后修改于: 2023-12-03 15:11:33.218000             🧑  作者: Mango
本题是SP竞赛第一场的第五题,要求设计算法解决问题。以下为详细介绍。
给定一个正整数n,求最小的k,满足n能被2^k整除。
一个正整数n(1 <= n <= 10^9)
一个正整数k
输入:8
输出:3
对于一个数n,可以找到它的最大因数2^k,只需要一直除以2,直到余数不为零,剩下的即为n的最大因数。
def min_power_of_two(n):
k = 0
while n % 2 == 0:
k += 1
n = n / 2
return k
该算法的时间复杂度为O(logn)。
该算法的时间复杂度是比较优秀的,每次都将n除以2,可以快速确定n的最大因数,因此是一种比较高效的算法。