CS61A的homework questions

问题就是求最大公因数

def largest_factor(n):
    """Return the largest factor of n that is smaller than n.
    >>> largest_factor(15) # factors are 1, 3, 5
    5
    >>> largest_factor(80) # factors are 1, 2, 4, 5, 8, 10, 16, 20, 40
    40
    >>> largest_factor(13) # factor is 1 since 13 is prime
    1
    """
    i = 1
    while i < n ** 1/2:
        i += 1
        if not n % i:
            return n//i
    return 1

这后面的循环内容没看明白,if not 是怎么用的,还有那个return n//i和return 1也不懂,能给讲讲吗

  • if not 就是后面如果是0或者False 条件成立
  • return 1是因为两个数没有大于1的公因数,因此最大公因数只能是1
  • if not n%i表示n对i取余为0时,not 0就是1了,所以条件成立,表示找到了公因数,return n//i是保留n//i的整数部分
  • /得到的是浮点数,//得到的是结果的整数部分
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632