📜  算法测验| SP竞赛1 |问题5(1)

📅  最后修改于: 2023-12-03 15:11:33.218000             🧑  作者: Mango

算法测验 | SP竞赛1 | 问题5

本题是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的最大因数,因此是一种比较高效的算法。