zoukankan      html  css  js  c++  java
  • 507.Perfect Number

    We define the Perfect Number is a positive integer that is equal to the sum of all its positive divisors except itself.
    Now, given an integer n, write a function that returns true when it is a perfect number and false when it is not.

    Example:

    Input: 28
    Output: True
    Explanation: 28 = 1 + 2 + 4 + 7 + 14

    Note: The input number n will not exceed 100,000,000. (1e8)

    Solution1:(TLE)

    class Solution:
        def checkPerfectNumber(self, num):
            """
            :type num: int
            :rtype: bool
            """
            sum = 0
            for i in range(1,num):
                if num%i==0:
                    sum +=i
            if sum==num:
                return True
            return False
    

    43 / 156 test cases passed.

    Solution2:(TLE)

    class Solution:
        def checkPerfectNumber(self, num):
            """
            :type num: int
            :rtype: bool
            """
            sum = 0
            for i in range(1,num):
                if num%i==0:
                    sum +=i
                if sum>num:
                    return False
            if sum==num:
                return True
            return False
    

    41 / 156 test cases passed.
    After optimiztion,it get even worse.

    Solution3:

    class Solution:
        def checkPerfectNumber(self, num):
            """
            :type num: int
            :rtype: bool
            """
            if num<=1:
                return False
            sum = 0
            for i in range(2,int(num**0.5)+1):
                if num%i==0:
                    sum += i
                    if i*i != num:
                        sum += num/i
            return num-1==sum
    

    Avoid calcuate twice.

  • 相关阅读:
    匿名内部类详解
    成员内部类详解
    内部类
    局部内部类详解
    switch
    Enum 类型
    循环
    标号
    软件开发模型
    RUP
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9747785.html
Copyright © 2011-2022 走看看