当前位置: 首页 > 后端技术 > Java

LeetCode-507-PerfectNumber

时间:2023-04-01 19:08:31 Java

PerfectNumber题目描述:对于一个正整数,如果它等于除它本身以外的所有正因子之和,我们称它为“完美数”。给定一个整数n,如果它是一个完美的数字则返回true,否则返回false。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:方案一增加一个方法calculateAllPrimeFactor获取num的所有正因子(自身除外),返回值是一个List,将返回值的所有元素相加,判断是否等于num,如果相等,返回真;否则,返回假。calculateAllPrimeFactor方法的逻辑如下:首先,声明一个要返回的List作为primeFactor;如果num等于1,直接返回primeFactor;否则,将primeFactor加1;如果num小于4,返回primeFactor;然后遍历从2到num的平方根,如果num能被它整除,就把这个数和这个数除以num后的数加到primeFactor上。最后返回primeFactor。importjava.util.ArrayList;importjava.util.List;/***@Author:ck*@Date:2021/10/311:43上午*/publicclassLeetCode_507{publicstaticbooleancheckPerfectNumber(intnum){列表<整数>primeFactor=calculateAllPrimeFactor(num);for(Integerinteger:primeFactor){num-=integer;}if(num==0){返回真;}返回假;}publicstaticListcalculateAllPrimeFactor(intnum){ListprimeFactor=newArrayList<>();如果(num==1){返回primeFactor;}primeFactor.add(1);如果(num<4){返回primeFactor;}for(inti=2;i<=Math.sqrt(num);i++){if(num%i==0){primeFactor.add(i);primeFactor.add(num/i);}}返回primeFactor;}publicstaticvoidmain(String[]args){System.out.println(checkPerfectNumber(28));}}【每日寄语】抓紧每一分每一秒,现实比想象中的一月年好