首页 > 编程语言 >力扣507(java)-完美数(简单)

力扣507(java)-完美数(简单)

时间:2022-08-28 17:13:19浏览次数:60  
标签:java 完美 28 力扣 int num 507 false

题目:

对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。

给定一个 整数 n, 如果是完美数,返回 true;否则返回 false。

 

示例 1:

输入:num = 28
输出:true
解释:28 = 1 + 2 + 4 + 7 + 14
1, 2, 4, 7和 14 是 28 的所有正因子。
示例 2:

输入:num = 7
输出:false
 

提示:

  • 1 <= num <= 108

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/perfect-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

根据完美数的定义,需要排除自身,那么1一定不是一个完美数,且完美数的正因子一定是成对出现的,故可以只枚举出每对中较小的一个即枚举范围为[1,sqrt(num)]。

例如:num=36

36除自身以外的正因子为1,2,3,4,6,9,12,18,除1和6以外都是成对出现的[2,18],[3,12],[4,9],故只需要遍历到6就可以,且6只能计算一次。

或者让遍历的起始数 i 从2开始(1不是完美数),上限条件为 i <= num / i

代码:

 1 class Solution {
 2     public boolean checkPerfectNumber(int num) {
 3         if(num == 1) return false;
 4         //定义和的初始值为1
 5         int sum  = 1;
 6         for(int i = 2; i <= num / i; i++){
 7             if(num % i == 0){
 8                 //能被整除,加上小的因子
 9                 sum += i;
10                 //当前数不能被完全平方则加上大的因子
11                 //否则能被完全平方只能加一个
12                 if( i*i != num){
13                     sum += num / i;
14                 }
15             }
16         }
17         return sum == num;
18     }
19 }

标签:java,完美,28,力扣,int,num,507,false
From: https://www.cnblogs.com/liu-myu/p/16633092.html

相关文章

  • Java并发编程异步操作Future和FutureTask
    学习来源:https://www.cnblogs.com/steakliu/p/16060651.htmlFuture和FutureTaskFuture是一个接口,FutureTask是一个类,实现RunnableFuture接口,RunnableFuture接口继承Fut......
  • 初识JavaScript
    目录JS的组成JS有三种书写位置:行内、内嵌、外部1.行内式JS2.内嵌式JS3.外部式JSJS注释JS输入输出语句变量1.声明变量2.赋值3.变量的初始化4.变量扩展5.变量命名规范数据......
  • 初识JavaScript
    目录JS的组成JS有三种书写位置:行内、内嵌、外部1.行内式JS2.内嵌式JS3.外部式JSJS注释JS输入输出语句变量1.声明变量2.赋值3.变量的初始化4.变量扩展5.变量命名规范数据......
  • Java封装正则表达式工具类
    Java与正则表达式Java中封装了关于正则表达式的内容,但是并不够彻底(抑或是我理解不够彻底),方便起见,在此编写一个小工具类:publicstaticArrayList<ArrayList<String>>......
  • Java - BIO 总结
    BIO介绍BIO编程方式通常是在JDK1.4版本之前常用的编程方式。编程实现过程为:首先在服务端启动一个ServerSocket来监听网络请求,客户端启动Socket发起网络请求,默认情......
  • Java我的高效编程之环境搭建
    前言:刚毕业,工作之余写博客有利于提高技术,更是能帮助人,接下来会认认真真写好每一篇博客。希望大家多多支持。废话不多说,马上开始。这是一篇环境搭建的博客。jdk+eclipse+s......
  • java helloworld demo
    大二的时候写过web仅限于idea配合springboot,学习的时候需要写个javademo或者算法,居然不知道怎么写了首先创建一个文件夹,写上你的代码,因为是demo,所以不......
  • Java入门
    Java的特性及优势:简单性面向对象可移植性高性能分布式动态式多线程安全性健壮性Java的三大版本JavaSE:标准版(桌面程序,控制台开发…)JavaME:嵌入式开发(手机,小家电…)JavaEE:E企业......
  • 解决eclipse中的Java文件,使用idea打开的乱码问题
    吐槽:在克隆一些Github上面资源的时候,使用idea打开,会出现乱码的情况......
  • java判断list里是否有重复元素/元素是否完全相同
    判断list里是否有重复元素/元素是否完全相同_wuwujian111的博客-CSDN博客_判断list中所有值是否相同 https://blog.csdn.net/javaofliang/article/details/46358083充分......