前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode Weekly Contest 25 之 507.Perfect Number

LeetCode Weekly Contest 25 之 507.Perfect Number

作者头像
用户1147447
发布2019-05-26 09:57:53
3620
发布2019-05-26 09:57:53
举报
文章被收录于专栏:机器学习入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1434839

LeetCode Weekly Contest 25

赛题

本次周赛主要分为以下4道题:

  • 507 Perfect Number (3分)
  • 537 Complex Number Multiplication (6分)
  • 545 boundary of Binary Tree (8分)
  • 546 Remove Boxes (9分)

507 Perfect Number

Problem:

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)

没有什么难度的题,思路在题目中已经给你了,无非是在遍历条件上做点思考。

My first solution(14ms)

代码语言:javascript
复制
public boolean checkPerfectNumber(int num) {

        //边界条件
        if(num == 0 || num == 1) return false;

        //第二部分
        int sum = 1;
        for (int i = 2; i * i <= num; i++) {
            if (num % i == 0){
                sum += i + num / i;
            }
        }

        return sum == num;
    }

注意一些细节,Perfect Number不能由它自己组成,所以排除0和1。num由两个相乘的数分解,所以遍历时只需要遍历num−−−−√\sqrt {num}个数即可,所以遍历条件为i*i <= num,注意等于号。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年03月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LeetCode Weekly Contest 25
    • 赛题
      • 507 Perfect Number
        • My first solution(14ms)
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档